我在meteor中有一个非常简单的测试应用程序,我创建了一个这样的集合:
var people = new Meteor.Collection("people");
当我尝试做一个简单的插入时,像这样:
people.insert({name: "Benson"});
我收到404错误,文字“未找到方法”。我承认我很有可能在这里尝试一些东西,但我很想知道错误是什么,为什么错误是如此不透明(即它来自何处)。
答案 0 :(得分:6)
此错误几乎肯定意味着您只在客户端上定义了people
,但在服务器上没有定义new Meteor.Collection('people')
。 new Meteor.Collection
声明也必须在服务器上运行,否则服务器不知道如何运行insert命令。
确保在客户端和服务器上都调用if (Meteor.is_client)
。您是在client
内或new Meteor.Collection
子目录下的文件中调用它吗?
更多详细信息:在服务器上,Meteor.methods
定义了三个远程方法({{1}}),用于在命名的MongoDB集合中插入,更新和删除文档。在客户端上,同一命令创建一个存在于浏览器中的内存中的最小集合,并定义三个存根,通过对minimongo集合应用相同的更改来模拟这些方法。通过仅在客户端上声明集合,您的客户端代码就可以正常运行本地插入,但是当它要求服务器执行实际插入时,服务器不知道您要求它执行哪种方法。
答案 1 :(得分:1)
如果您只想在客户端使用收藏,并且您不需要将该数据保存到服务器,则可以在"客户端"中声明您的收藏。文件夹或.isClient()函数通过将null传递给构造函数,如下所示:
if(Meteor.isClient()){
// Some other code
...
onlyClientCollection = new Meteor.Collection(null);
// Some other code
...
}