从 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,然后简单地向其中添加字段。这样我就不必一直将它保存给所有用户,它只是用于会话终止之前检索到的用户对象。
我正在开发一个具有多种用户的 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,然后简单地向其中添加字段。这样我就不必一直将它保存给所有用户,它只是用于会话终止之前检索到的用户对象。