保存尝试保存字段/列,但不保存值

时间:2015-04-03 07:44:30

标签: javascript parse-platform promise q

我正在使用Parse和服务器端Javascript。我想在列值中保存总数,如下所示。此代码保存新的列值,但它没有放入任何值。 Total有多个真值和假值(如0和NaN),因为每个Id都有一个总数。

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

1 个答案:

答案 0 :(得分:1)

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

它以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;
}