【发布时间】:2018-01-11 01:20:29
【问题描述】:
我正在显示集合中的一堆页面,因此为了让它们在我的视图中可用,我在 app.js 中初始化了一个全局 locals 变量,如下所示:
Page.find({}).sort({ sorting : 1}).exec(function(err, pages){
if (err) {
console.log(err);
} else {
app.locals.pages = pages;
}
});
效果很好。然而,我也有能力重新排序这些页面的显示方式,所以在我重新排序之后,我在同一条路线上从上面重做Page.find(),但它似乎总是落后一步。
因此,如果我通过重新排序(我们称之为reorder 1)进行更改,之后我看不到app.locals.pages 的差异,但如果我再次重新排序(我们称之为reorder 2,那么我会看到reorder 1 排序而不是 reorder 2 等等,所以基本上它总是落后一步。
路线中的相关代码:
for (var i = 0; i < ids.length; i++) {
var id = ids[i];
count++;
(function(count) {
Page.findById(id, function (err, page) {
page.sorting = count;
page.save(function (err) {
if (err)
console.log(err);
});
});
})(count);
}
Page.find({}).sort({sorting: 1}).exec(function (err, pages) { // this is always a step behind
if (err) {
console.log(err);
} else {
req.app.locals.pages = pages;
}
});
为什么不是最新的?
【问题讨论】:
-
我没有完全理解你的问题,哈哈。你想做什么?
-
@boubaks 在 for 循环运行并且 db 中的值发生变化后, req.app.locals.pages 不会反映最新的变化。
标签: javascript node.js express mongoose