保存尝试保存 field/column 但不保存值

Save attempt saves the field/column but not the value

我正在使用 Parse 和服务器端 Javascript。我想在我的专栏职责中保存数字 Total ,如下所示。这段代码保存了新的列职责,但没有将任何值放入其中。 Total 混合了 truthy 和 falsy 值(如 0 和 NaN),因为每个 Id 都没有 Total。

for (i = 0; i < Ids.length; i++){
Id = Ids[i];

var Total = Math.round(_.reduce(_.map(value[i], function (n) {
     return n.Partial
   }), function (memo, num) {
     return memo + num;
   }, 0) * 100) / 100;


Query.get(Id, {
 success: function (item) {
   item.set("duty", Total);
   Q.all(item.save());
  }
 })
}

尝试重构了一点,(没有完全理解代码的含义)。当分成逻辑部分时,它变得更加清晰。异步发生的事情总是被划分为返回承诺的函数。

最终形成一个savePromises的数组,可以是运行和saveAll

var savePromises = [];
_.each(Ids, function(objectId, index) {
    savePromises.push(setDuty(objectId, index));
});
Parse.Object.saveAll(savePromises);

// get an object with its id.  use its index to compute a duty
// return a promise to save the object
function setDuty(objectId, index) {
    return getObjectWithId(objectId).then(function(object) {
        object.set("duty", dutyValueForIndex(index));
        return object.save();
    });
}

// return a promise to get an object with its id
function getObjectWithId(objectId) {
    var query = new Parse.Query("Table_Name_Goes_Here");
    return query.get(objectId);
}

// compute duty for a given index
function dutyValueForIndex(index) {
    var array = _.map(value[i], function(n) {
        return n.Partial
    });
    var sum = _.reduce(array, function(memo, num) { return memo+num; }, 0);
    return sum * 100 / 100;
}