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

私はPythonddpクライアントを使用しているので、このようにする必要があります。

問題は、nextElementがリストのシーケンスを実際にインクリメントしないことです。私のリストが[50,100,150、...]だったと想像してください。updateListを呼び出すと、[50,100,150,150,150,150...]などになります...そして[50,100,150,200,250,300...]になるはずです。

誰かが理由を知っていますか?

4

1 に答える 1

2

+1の代わりにnextElement を作成することから始めましょう+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 に答える