【发布时间】:2020-03-23 16:57:39
【问题描述】:
当我想使用 Mongoose 将一组集合返回给我时,我遇到了问题。问题是代码中的 .map 方法返回一个空对象数组,但是如果我将对象单独记录在 .map 中,一切都很好。为什么会这样?
const patients = doctor.patients.map(async patient => {
try {
const patientObj = await Patient.findOne({ username: patient });
patient = patientObj;
patient.jwt = undefined;
patient.__v = undefined;
console.log(patient); // This works just fine, logs the object the right way
return patient;
} catch (err) {
console.log(err);
}
});
console.log(patients); // This logs [{}, {}, {}]
【问题讨论】:
-
1.您的映射函数中没有
return。 2. 你传递了一个异步回调,所以不管你有什么代码,你都会得到一个 promise 数组。 -
您也可以在您的猫鼬模式中添加(选择:false),因此您不必将 patient.password 设置为未定义密码:{type: String, select: false},
-
此外,您似乎只想要特定医生的患者列表?
-
@Fullhdpixel 是正确的。另外,添加“return”后似乎也不起作用。
标签: javascript arrays node.js mongodb mongoose