新的对象结构阻止.serialize()成功

时间:2018-09-04 10:33:20

标签: node.js reactjs mongoose

我有以下节点路由:

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()))进行序列化,则得到的序列化基数相同,但是messagesusers的序列化值为0:

0:
  base:
    {
      id: "5b8d3fb3ccdfcc2e20540603", creatorId: "5b86f7970cd98b2004969bf0", 
      title: "baseTest1", created: "2018-09-03T14:04:56.467Z"
    },
    messages: 0,
    users: 0

这可能是因为在此编辑中,我的Schema模型不包括类似于代码的结构,而是仅包括基础本身。

0 个答案:

没有答案