我是javascript的新手,也是Meteor的新手。这段代码是否正确?我需要定义一个函数,它将获取一组值并将它们插入Meteor Collection" FooterButtons"?
客户端代码
replaceCollectionContents(['NO', 'B', 'YES']);
两个代码
replaceCollectionContents = function (buttonsList) {
FooterButtons.remove();
for(i = 0; i < buttonsList.length; i++) {
FooterButtons.insert(buttonsList[i]);
}
};
答案 0 :(得分:1)
您不能直接将字符串插入集合。 insert方法需要一个object类型的文档。
试试这个 -
FooterButtons.insert({ text: buttonsList[i] });
此外,我注意到您正在尝试清除FooterButtons集合。请注意,您无法从客户端清除此类集合,因为它被视为不受信任的代码。从客户端,您只能一次删除一个文档,由_id。
指定我建议你改用一种方法。
Meteor.methods({
replaceCollectionContents: function (buttonsList) {
// remove all existing documents in the collection
FooterButtons.remove({});
// insert new button documents into the collection
buttonsList.forEach(function (button) {
FooterButtons.insert({ text: button });
});
}
});
并在需要时调用此方法
Meteor.call("replaceCollectionContents", ['NO', 'B', 'YES']);
在方法内部,请注意我正在将{}
选择器传递给remove
方法,因为出于安全原因,如果省略选择器,Meteor不会删除任何文档。
您可以在Meteor文档中详细了解remove。
答案 1 :(得分:1)
如果我理解正确,您需要将数据播种到FooterButtons
集合中,对吗?
将此代码放在server
文件夹的某处:
buttonsList = ['NO', 'B', 'YES'];
if (FooterButtons.find().count() === 0) {
_.each(buttonsList, function(button) {
FooterButtons.insert({text: button});
});
}
运行meteor并检查你的mongodb FooterButtons集合。让我知道。如果这项工作,我会解释
如果您需要更新,请更新它:
FooterButtons.update({text:'B'}, {$set:{text:'Extra'}});