从 mongodb 中检索为文档后如何获取对象类型?

How to get object type after retrieving it as document from mongodb?

我正在开发一个具有多种用户的 nodejs 应用程序,例如“用户”和“页面”。我正在使用 MongoDB 保存我的数据,并使用 passportjs 进行身份验证。我需要根据用户类型提供不同的序列化方法。示例代码:


    passport.serializeUser((obj, done) => {
        if (obj instanceof User) {
            console.log("serialising user", obj);
            done(null, { id: obj._id, type: 'user' });
        } else if (obj instanceof Page) {
            console.log("serialising page", obj);
            done(null, { id: obj._id, type: 'page' });
        } 
    });

这里的问题是 instanceof 不适用于从 MongoDB 检索到的文档。它们是使用 User/Page 的构造函数创建的,但现在我无法区分它们,因为它们现在都是对象类型。我该如何处理?

从这两个不同的集合中找到一个唯一字段,并根据字段和字段值应用此逻辑

我最终做的确实是在返回的对象中使用了一个字段obj.userType ='user'/'page',但我没有将它保存在数据库中。相反,我查询对象,取回文档 BSON,然后简单地向其中添加字段。这样我就不必一直将它保存给所有用户,它只是用于会话终止之前检索到的用户对象。