当集合插入导致404时,它意味着什么?

时间:2012-04-12 05:53:20

标签: meteor

我在meteor中有一个非常简单的测试应用程序,我创建了一个这样的集合:

var people = new Meteor.Collection("people");

当我尝试做一个简单的插入时,像这样:

people.insert({name: "Benson"});

我收到404错误,文字“未找到方法”。我承认我很有可能在这里尝试一些东西,但我很想知道错误是什么,为什么错误是如此不透明(即它来自何处)。

2 个答案:

答案 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
...
}