【发布时间】:2018-05-22 17:19:07
【问题描述】:
我正在尝试在一个循环中更新 var,然后将其返回到一个 Promise 中。但是 var 无法更新。到目前为止,我已经尝试过了,
var queryPromise = cronie.find({}).
where('id').equals(req.user._id).
exec(); //mongoose promise
queryPromise.then(function(timer) {
for (var i = 0, len = timer.length; i < len; i++) {
x = moment.unix(timer[i].nextTick).format('dddd, MMMM Do, YYYY h:mm:ss A'); //convert to human;
console.log(x);
timer[i].nextTick = x;
console.log(timer[i].nextTick);
}
return timer;
}).then(function(timer) {
res.render('dash.ejs', {
user: req.user,
timer: timer
});
});
});
这是输出:
0|server | Monday, May 21st, 2018 11:00:00 PM
0|server | 1526943600
0|server | Monday, May 21st, 2018 7:28:22 PM
0|server | 1526930902
0|server | Monday, May 21st, 2018 7:28:22 PM
0|server | 1526930902
0|server | Monday, May 21st, 2018 7:28:22 PM
0|server | 1526930902
0|server | Monday, May 21st, 2018 7:28:22 PM
0|server | 1526930902
但timer[i].nextTick 保持不变。如何在将其发送到渲染之前对其进行更新,以便用户可以看到人工时间而不是戳记?
更新定时器数组的切片
0|server | { _id: 5b031dd6c0d99f79946f263f,
0|server | id: '5b031dd5c0d99f79946f263a',
0|server | lastTick: 1526930902,
0|server | nextTick: 1526930902,
0|server | lastUpdate: 1526930902,
0|server | __v: 0,
0|server | timerStatus: false,
0|server | emailStatus: false }
更新 2
添加
timer[i].date = moment.unix(timer[i].nextTick).format('dddd, MMMM Do, YYYY h:mm:ss A');
然后将 ejs 更改为 timer.date works。但是分配nextTick 仍然没有。
【问题讨论】:
-
如果可以,请保持
.nextTick属性不变并设置另一个属性,例如将.nextTick_设置为格式化版本。
标签: javascript node.js foreach promise