Obj 没有推入 javascript 中的数组
Obj is not pushing into array in javascript
我在这里收到一组 csv 文本中的标记,每个标记都属于 monogdb 中的一个文档。我的逻辑是明智地获取文档标记并将它们 return 作为数组发送到前端。
我已经这样做了,但是它 return 是一个空错误而不是对象数组。
var helps = [];
const token_list = req.body.token_list;
let splittedtoken = token_list.split(",");
splittedtoken.shift();
console.log(splittedtoken);
splittedtoken.forEach(token => {
Help.find({ 'token': token }, (err, result) => {
if (result) {
helps.push(result[0])
}
});
console.log(helps);
})`
无法解决,欢迎大家指教。谢谢
数据库操作是异步的,但 forEach
不是。
您可以使用Promise.all
来实现它。首先,将所有数据库操作推送到一个数组,然后使用 Promise.all
检索它的结果。
var helps = [];
const token_list = req.body.token_list;
let splittedtoken = token_list.split(",");
splittedtoken.shift();
console.log(splittedtoken);
let promises = [];
splittedtoken.forEach(token => {
promises.push(new Promise((resolve, reject) => Help.find({
'token': token
}, (err, result) => {
if (result) {
resolve(result[0])
}
})));
});
Promise.all(promises).then(results => console.log(results)).catch(e => console.log(e));
请注意,Promise.all 是全有或全无。如果单个承诺被拒绝,整个操作将失败并执行 catch 块。
我在这里收到一组 csv 文本中的标记,每个标记都属于 monogdb 中的一个文档。我的逻辑是明智地获取文档标记并将它们 return 作为数组发送到前端。
我已经这样做了,但是它 return 是一个空错误而不是对象数组。
var helps = [];
const token_list = req.body.token_list;
let splittedtoken = token_list.split(",");
splittedtoken.shift();
console.log(splittedtoken);
splittedtoken.forEach(token => {
Help.find({ 'token': token }, (err, result) => {
if (result) {
helps.push(result[0])
}
});
console.log(helps);
})`
无法解决,欢迎大家指教。谢谢
数据库操作是异步的,但 forEach
不是。
您可以使用Promise.all
来实现它。首先,将所有数据库操作推送到一个数组,然后使用 Promise.all
检索它的结果。
var helps = [];
const token_list = req.body.token_list;
let splittedtoken = token_list.split(",");
splittedtoken.shift();
console.log(splittedtoken);
let promises = [];
splittedtoken.forEach(token => {
promises.push(new Promise((resolve, reject) => Help.find({
'token': token
}, (err, result) => {
if (result) {
resolve(result[0])
}
})));
});
Promise.all(promises).then(results => console.log(results)).catch(e => console.log(e));
请注意,Promise.all 是全有或全无。如果单个承诺被拒绝,整个操作将失败并执行 catch 块。