【问题标题】:How do I read and write files to the server with Meteor?如何使用 Meteor 读取和写入文件到服务器?
【发布时间】:2013-06-17 23:08:30
【问题描述】:

我正在 Meteor 中开发 NoDB CMS,但我对 Meteor 和 JavaScript 框架都是新手。

我如何去读取和写入文件到服务器?

【问题讨论】:

  • 更具体地说,我想从服务器读取图像文件,对其进行操作,然后将单独的版本保存回服务器的另一个目录中。
  • 当我尝试像这样加载节点 FS 时: var fs = Npm.require('fs');我收到一个错误:Uncaught ReferenceError: Npm is not defined

标签: javascript file meteor


【解决方案1】:

在 Node fs 模块中,您有一个 writeFile 函数。

getUser = Meteor.users.findOne({_id : Meteor.userId()});
userObject = JSON.stringify(getUser);
var path = process.env["PWD"] + "/public/";
fs.writeFile(process.env["PWD"] + "/public/"+Meteor.userId()+'.txt', userObject, 
        function (err) {
            if (err) throw err;
              console.log('Done!');
        }
    );

上面的 sn -p 将创建一个包含用户所有信息的文件。您可以使用 getUser._id 之类的内容访问查询结果的属性,以准备您的 data 参数(字符串或缓冲区)以进行漂亮的打印。

所有这些当然都是服务器端的。

【讨论】:

    【解决方案2】:

    你可以尝试在启动函数中使用 Npm.require。像这样

    Meteor.startup(function () {
       fs = Npm.require('fs');
    }
    

    但您绝对应该看看collectionFS,它可以满足您的需求:在服务器上存储文件并允许您检索它们

    另一个优势是您可以将所有内容分布在 MongoDB 集群的多个节点上

    要操作图像文件,您可以使用imagemagick with nodejs 这应该允许您以任何您需要的方式进行转换。

    【讨论】:

    • 我仍然得到未定义的错误,即使使用该启动功能。我应该以某种方式在某个地方定义 Npm 吗?
    • 如果你有0.6之前的版本,请运行meteor --version 没有定义Npm
    • 我有最新版本的 Meteor。
    • 这很奇怪。你的操作系统是什么?
    • 你能发布文件名、文件位置和失败的代码吗?我能找到的唯一解释是,您正在尝试在客户端代码中使用 Npm。
    【解决方案3】:

    node fs 模块是一个开始。 http://nodejs.org/api/fs.html

    不过,您可能希望对您的问题更具体一些,因为它有点宽泛。

    【讨论】:

    • 看起来应该可以正常工作。如何在 Meteor 项目中设置它?
    • 我还没有尝试过,对 Meteor 不熟悉,不知道从哪里开始。如果我需要(fs),是否将其放在服务器文件夹中?如果我这样做,我如何从客户端调用它?
    • 好的,所以如果您不熟悉 Meteor:请先熟悉 Meteor。这对于您的第一个 Meteor 应用来说太先进了。
    • 所以现在我有点熟悉了。我这样做了: if (Meteor.isClient) { Meteor.startup(function () { fs = npm.require('fs'); });并将其放入我的 main.js 文件中。但我收到“未定义 npm”错误。
    • 你不能在客户端使用npm,只能在服务端使用。
    猜你喜欢
    • 2017-04-10
    • 1970-01-01
    • 2015-04-10
    • 2011-10-30
    • 1970-01-01
    • 2017-08-27
    • 2012-09-15
    • 2013-10-03
    • 2015-07-26
    相关资源
    最近更新 更多