【发布时间】:2014-04-01 15:06:04
【问题描述】:
我在按原始顺序显示结果集时遇到了一点问题。 我的猫鼬“查询”很简单:
myCollection.find({}, null, {sort: {weight: 1}}, function (err, res) {
//etc...
});
res的日志不错,我的结果按权重asc正确排序。
我在 ejs 模板中使用 forEach 循环显示结果,如下所示:
<% res.forEach(function(r) { %>
<%= r.weight %>
<% }) %>
它以“伪随机”顺序显示我的结果... 例如:2,3,4,1,9,10,6 ...
在我的架构中,重量参数是一个数字
weight : { type: Number, default: 0, required: false }
更新:
我在这样的循环中对结果执行另一个查询:
newResult = [];
async.each(res, function(r, callback) {
// some actions with r ...
newResult.push(r);
}, ....);
我在循环中构造了一个新的对象列表,这个列表被发送到视图以显示元素。
我认为js对数组重新排序...
可以保持原来的顺序吗?
谢谢。 感谢你的帮助。 C.
【问题讨论】:
-
typeof(r.weight)在你的循环中输出什么? -
typeof(r.weight)返回“数字” -
我不明白更新中发生了什么 - 这与原始问题有关吗?
-
是的,因为它是发送到视图的 newResult var。
标签: node.js mongodb mongoose ejs