我有以下节点路由:
function getBasePromise(base) {
return new Promise(async (resolve, reject) => {
const users = await BaseUser.countDocuments({ baseId: base._id });
resolve({
base,
users,
});
});
}
async function fetcher() {
try {
const bases = await Base.find({ creatorId: req.params.id });
const baseUserPromises = bases.map(base => getBasePromise(base));
return await Promise.all(baseUserPromises);
} catch (err) {
console.error(err);
res.status(500).json({ message: "Internal server error" });
}
}
在我只有Base.find
之前,我就能够完成这项工作。仅使用Base模型,我就可以序列化对象,因此可以使用前端(反应)中每个项目的ID。
在上面的代码之后,我现在有一个这样的对象:
{
base: {base.find results},
users: XX,
messages: XX
}
使用新的对象结构,序列化显然不起作用。该如何解决?
编辑: 如果我不序列化上述内容,则会得到以下信息:
0:
base:
{
created: "2018-09-03T14:04:56.467Z", _id: "5b8d3fb3ccdfcc2e20540603",
creatorId: "004969bf0", title: "baseTest1"
}
messages: 2,
users: 3
如果我通过bases.map(base => getBasePromise(base.serialize()))
进行序列化,则得到的序列化基数相同,但是messages
和users
的序列化值为0:
0:
base:
{
id: "5b8d3fb3ccdfcc2e20540603", creatorId: "5b86f7970cd98b2004969bf0",
title: "baseTest1", created: "2018-09-03T14:04:56.467Z"
},
messages: 0,
users: 0
这可能是因为在此编辑中,我的Schema模型不包括类似于代码的结构,而是仅包括基础本身。