Array.push() 不工作? [复制]
Posted
技术标签:
【中文标题】Array.push() 不工作? [复制]【英文标题】:Array.push() is not working? [duplicate] 【发布时间】:2017-12-15 01:46:28 【问题描述】:我有以下代码,其中在 mongoose 调用之外不知道 newUsers。 我必须返回 newUsers 列表。
挣扎了很久。但没有得到任何改进。
exports.list = function(req, res)
User.find( 'roles': 'user' , '-salt -password -providerData').sort('-created').populate('user', 'displayName').lean().exec(function(err, users)
if (err)
return res.status(422).send(
message: errorHandler.getErrorMessage(err)
);
var i;
var newUsers = [];
users.forEach(function(user)
Customer.find( user: user._id ).exec(function(err, customers)
if (err)
return res.status(400).send(
message: errorHandler.getErrorMessage(err)
);
user.customers = customers.length;
newUsers.push(user);
console.log(newUsers.length); // newUsers are known here
return newUsers; **// does not workout**
);
console.log(newUsers.length); //newUsers are not known here
);
);
;
【问题讨论】:
@ponury-kostek - 我是节点和角度的新手。我会努力理解 在尝试帮助他人之前投反对票是没有用的 我没有反对你的问题,只是标记为重复 【参考方案1】:exports.list = function (req, res)
User.find( 'roles': 'user' , '-salt -password -providerData').sort('-created').populate('user', 'displayName').lean().exec(function (err, users)
if (err)
return res.status(422).send(
message: errorHandler.getErrorMessage(err)
);
var i;
var newUsers = [];
users.forEach(function (user)
Customer.find( user: user._id ).exec(function (err, customers)
if (err)
return res.status(400).send(
message: errorHandler.getErrorMessage(err)
);
user.customers = customers.length;
newUsers.push(user);
console.log(newUsers.length, newUsers);
);
);
);
;
你需要了解异步编程
【讨论】:
【参考方案2】:您将返回forEach()
内部,我认为您应该返回forEach()
外部以获得更好的结果。
请试试下面的代码,希望它对你有用:
exports.list = function (req, res)
User.find( 'roles': 'user' , '-salt -password -providerData').sort('-created').populate('user', 'displayName').lean().exec(function (err, users)
if (err)
return res.status(422).send(
message: errorHandler.getErrorMessage(err)
);
var i;
var newUsers = [];
users.forEach(function (user)
Customer.find( user: user._id ).exec(function (err, customers)
if (err)
return res.status(400).send(
message: errorHandler.getErrorMessage(err)
);
user.customers = customers.length;
newUsers.push(user);
);
);
console.log(newUsers.length);
return newUsers;
);
;
【讨论】:
还是不行。这个我已经试过了 您要推送 newUsers.push(user) 还是 newUsers.push(customers) ?我想你想做 newUsers.push(customers)。 没有。我想在用户本身中吸引客户 在 "Customer.find( user: user._id ).exec(function (err, customers) " 行之前添加 "user.toJSON()"。以上是关于Array.push() 不工作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
array.push() 方法没有向数组添加任何内容并且工作异常