gpt4 book ai didi

javascript - Mongo 插入 Meteor 方法内部?

转载 作者:行者123 更新时间:2023-11-30 17:12:46 26 4
gpt4 key购买 nike

在我的 Meteor 应用程序中,我有一个 Meteor 方法,该方法将集合作为参数并尝试对该集合运行 mongo insert 命令以创建新文档。该代码使用 setInterval 每 10 秒运行一次。

集合定义:

My_Collection_Name = new Meteor.Collection('my_collection_name');


服务器代码:

var collection = My_Collection_Name;
var data = [1,2,3,'a','b','c'];
Meteor.call('createDocument', collection, data);


方法:

Meteor.methods({
createDocument: function(collection, data) {
collection.insert({
data: data
});
}
});


但是,这会在控制台中返回以下错误:

I20141030-14:58:06.716(-4)? Exception in setInterval callback: TypeError: Object #<Object> has no method 'insert'

为什么这行不通?是否可以将集合作为参数传入?提前致谢!

最佳答案

发生的情况是您在客户端和服务器上有不同 集合(在Understanding Meteor publish/subscribe 阅读更多内容)。依靠~私有(private)_collection领域是有风险的。你真正想要的是将集合名称作为字符串传递给 Meteor.call,确保你在服务器上具有与集合相同的变量名称,并通过其名称在 global 中查找集合。服务器上的对象:

// on the client:

MyCollection = new Mongo.Collection('record-set-name'); // set server-side by .publish()
Meteor.call('createDocument', 'MyCollection', data);

// on the server:
MyCollection = new Mongo.Collection('collection-name-in-mongo');
Meteor.methods({
createDocument: function(collectionName, data) {
global[collectionName].insert({
data: data
});
}
});

这个模式被 meteor-autocomplete 用于 pass collection names from the client to the server .

Understanding Meteor publish/subscribe解释集合名称和集合变量名称在 Mongo 中的关系。

关于javascript - Mongo 插入 Meteor 方法内部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com