【发布时间】:2014-02-28 03:53:54
【问题描述】:
执行以下操作可以正常工作:
$ mrt create testapp
$ cd testapp
$ mkdir local
$ cd local
$ mkdir collections
$ touch test.js
在 test.js 中,我添加:
Test = new Meteor.Collection('test');
然后我启动 Meteor:
$ meteor
打开一个新的控制台选项卡,我启动 Mongo:
$ meteor mongo
我插入一个条目:
$ db.test.insert({ Title: "This is a test" });
我在 localhost 上打开浏览器,可以使用控制台查看:
test.findOne();
好的,这样就可以了,就像它应该的那样。但是,我有一个我正在做的项目,我已经做了几天了。我不知道是什么导致了问题,但我无法通过控制台访问这些集合。
Posts = new Meteor.Collection('posts');
我用 mongo 控制台插入了一个测试帖子,并且可以用 mongo 控制台检索它,但是在浏览器中我得到:
Posts.findOne();
-- undefined
我一直在挖掘,无法弄清楚我可能做了什么导致它不起作用。我最初确实从 localhost 启动了这个应用程序,但是使用了一个托管在 MongoHQ 上的远程数据库。但是我删除了本地的数据库文件夹,重置了应用程序。重置蒙哥。我创建了一个新文件夹并复制了基本文件,因此流星基本上可以第一次运行。我无法弄清楚问题所在。
:(
有什么建议吗?谢谢!
【问题讨论】:
-
所以我在控制台中得到了智能感知,所以它看到了“帖子”变量。我正在收集本地数据库和 minimongo 的同步问题?
-
在您的应用程序中,您是从控制台调用
new Meteor.Collection...还是将其放在问题顶部的共享目录中?autopublish是否打开(或者您是否已将其删除)? -
嗨,大卫。在我的应用程序中,我在“client/collections/posts.js”中调用了新的 Meteor.Collection,我删除了 autopublish 并将其添加回来只是为了确定,它说:包 iron-router 已被忽略,因为它是手动安装的安装时在 /packages 中。跟这个有关系吗?
-
我不知道 IR 包错误,但是您必须以 客户端和服务器都可以看到它的方式定义集合。如果服务器没有集合定义,那么它不能代表客户端写入数据库。
-
我觉得自己像个白痴。你是对的,再一次。哈哈。我误读了教程,并在不应该的情况下将集合放在了客户端中。我现在去给自己挖个坑。谢谢大卫。如果您将此作为答案发布,我会接受。我简直不敢相信我浪费了时间和空间来放置错误的目录。