【发布时间】:2015-02-02 22:52:52
【问题描述】:
我已将数据导入流星 mongodb 数据库。这是我所做的: 通过
运行流星应用程序$ yourMeteorAppDir 流星
在一个终端和另一个终端启动 mongodb 运行通过
$mongod
启动另一个终端并运行以下命令将数据导入流星应用的数据库:
$ mongoimport -h localhost:3001 -d meteor -c collectionNameHere
但是,在从 json 文件导入文档后,我发现我的 Meteor 应用程序没有访问该集合。具体来说,当我尝试通过以下方式发布集合时:
Meteor.publish('collectionNameHere', function()
{return collectionNameHere.find();
});
我看到了:
来自子 ci9tk9AsFeyngHWwE ReferenceError 的异常:collectionNameHere 未定义 I20141203-07:15:18.436(-5)?在 null._handler (app/server/collectionName.js:9:14) I20141203-07:15:18.436(-5)?在 MaybeAuditArgumentChecks (packages/ddp/livedata_server.js:1599) I20141203-07:15:18.436(-5)?在 _.extend._runHandler (packages/ddp/livedata_server.js:943) I20141203-07:15:18.437(-5)?在 _.extend._startSubscription (packages/ddp/livedata_server.js:769) I20141203-07:15:18.437(-5)?在 _.extend.protocol_handlers.sub (packages/ddp/livedata_server.js:582) I20141203-07:15:18.437(-5)?在 packages/ddp/livedata_server.js:546
我可以通过meteor mongo在mongo中看到集合,也可以通过find查询。我是否需要从应用程序而不是通过导入创建 MongoDB 集合?
【问题讨论】:
-
您需要一个
collectionNameHere = new meteor.Collection('collectionNameHere')对客户端和服务器都可用的地方。 -
感谢 user3557327。我在我的:lib/collections/collectionName.js 文件夹中确实有它
-
我可能需要将return collectionNameHere.find()改为return collectionNameHere.find({});
-
该合集仍然不可用。
-
我所做的是通过
$ myApp reset重置 MongoDB,然后添加文档以检查集合,如果没有文档,则从 fixture.js 文件中插入它们。
标签: javascript node.js mongodb meteor