0

我有这个代码来更新一个条目:

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,
});

因为我正在使用 python ddp 客户端并且需要这样。

问题是 nextElement 并没有真正增加我列表中的序列。想象一下,我的列表是 [50,100,150,...],如果我调用 updateList,它会变成 [50,100,150,150,150,150...] 等等……它应该变成 [50,100,150,200,250,300...]。

有谁知道为什么?

4

1 回答 1

2

让我们从制作 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]
于 2013-01-07T00:46:03.670 回答