Reputation: 153
I am trying to update var inside a loop that is then returned to a promise. But the var fails to update. So far I have tried this,
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
});
});
});
This is the outputs:
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
But timer[i].nextTick
remains unchanged. How do I update it before sending it to render so that users can see human time instead of a stamp?
UPDATE Slice of the timer array
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 }
UPDATE 2
adding
timer[i].date = moment.unix(timer[i].nextTick).format('dddd, MMMM Do, YYYY h:mm:ss A');
then changing ejs to timer.date works
. But assigining nextTick
still does not.
Upvotes: 0
Views: 114
Reputation: 196002
You can use .lean()
to make the returned document be a plain javascript object. This way you can manipulate it at will, later on.
var queryPromise = cronie.find({}).
where('id').equals(req.user._id).
lean(). // make returned document be a plain js object
exec(); //mongoose promise
Documents returned from queries with the
lean
option enabled are plain javascript objects, not MongooseDocuments. They have nosave
method, getters/setters or other Mongoose magic applied.
Upvotes: 1