我试图在新的风帆回到客户端之前,在一些名为“城市”的项目列表上添加一些额外变量。 js应用程序。 Sails.js使用Underscore.js来执行基本的函数式编程。sails.js + underscore.js未能将散列项添加到数组中
这里是我目前使用_.each。 (我第一次尝试使用_.map并返回用户,但也没有工作)。
控制台正确地记录每个单独的用户,但cities_with_count在_.each情况下空“[]”,并在_.map情况下,两个未定义的“[未定义未定义]”
User.findByIdIn(user_ids).then(function(users){
var users_with_counts = []
_.each(users, function(user) {
Candy.count({ type: "yummy").then(function(candy_count){
user.candy_count = candy_count
console.log(user);
users_with_count.push(user);
});
});
console.log(users_with_count);
res.view({
users: users_with_count
});
});
无论如何强迫这些计数是同步的吗? – ajbraus
不,它实际上是不可能的,它与节点的整个事情几乎所有来自核心和库的API都是同步的,这是设计。目标是永远不会阻塞事件线程,因为只有一个这样的线程,并阻止它会阻止服务器。这会导致代码有很多回调函数(请参阅回调函数)http://stackoverflow.com/questions/18095107/callback-hell-in-nodejs来处理异步调用。另一种选择是像q这样的promise类库,希望它有所帮助。 –