Javascript Meteor.methods()在使用$push和db.update时出现意外行为
我有以下代码来更新条目:Javascript Meteor.methods()在使用$push和db.update时出现意外行为,javascript,node.js,mongodb,meteor,Javascript,Node.js,Mongodb,Meteor,我有以下代码来更新条目: function updateList(listTime) { var firstList = Project.find().fetch()[0].list; // returns a list var nextElement = (firstList[firstList.length-1] + 50); // value of last + 50 Project.update({name: "List 1"}, {$push: {list:
function updateList(listTime) {
var firstList = Project.find().fetch()[0].list; // returns a list
var nextElement = (firstList[firstList.length-1] + 50); // value of last + 50
Project.update({name: "List 1"}, {$push: {list: nextElement}});
}
我称之为:
Meteor.methods({
updateList: updateList,
});
因为我使用的是PythonDDP客户机,需要这样做
问题是nextElement并没有真正增加我列表上的序列。假设我的列表是[50100150,…],如果我调用updateList,它会变成[50100150150,…],依此类推。。。它应该变成[50100150200250300…]
有人知道为什么吗?让我们先把nextElement
+1
改为+50
var nextElement = (firstList[firstList.length-1] + 1);
请注意,listTime将成为列表中的最后一个元素。因此,如果运行updateList(20)
,列表将变成[1,2,3,4,5,6,7,20]
。如果随后调用updateList(2)
,它将变成[1、2、3、4、5、6、7、20、21、2]
等等
我不确定listTime应该做什么,但如果您希望将last int+1
添加到列表中:
function updateList() {
var firstList = Project.find().fetch()[0].list;
var nextElement = (firstList[firstList.length-1] + 1);
Project.update({name: "List 1"}, {$push: {list: nextElement}});
}
这将导致:
Project.find().fetch()[0].list
> [1, 2, 3, 4, 5, 6, 7]
updateList()
Project.find().fetch()[0].list
> [1, 2, 3, 4, 5, 6, 7, 8]
updateList()
Project.find().fetch()[0].list
> [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果你想要+1,为什么你要+50?这是我代码中其他地方的一个错误。对不起,伙计们,谢谢你们的回答,这是个打字错误。忘记第二次更新。“加1”增量只是一个例子。我真正想要的是一个“加5”的增量。我编辑了这篇文章,使其更加连贯。我可以看到数字在增加,但随后又恢复了……嗯,说实话,我不确定。您确定正在获取/更新正确的项目文档吗?或者你的应用程序中有其他代码可以重置你的列表。是的,我确定。这一定是update()或methods()甚至Meteor.call()的一个技巧,我不知道。。