为什么我必须在mongoose中使用' toObject() '来查找对象是否具有属性?
Why did I have to use `toObject()` in mongoose to find out if an object has a property?
根据我的理解,JavaScript中没有.toObect()
,但它在mongoose中用于将mongoose文档更改为对象,因此您可以使用JavaScript内置函数。
.toObject
添加到返回的数组和forEach将工作。差不多就是这样。我不确定我的记忆是forEach还是别的什么。不管怎样,这是最新的奇怪问题。我在EJS,我需要做<% console.log("typeof", user.toObject().hasOwnProperty("facebook")) %>
工作,而不是<% console.log("typeof", user.hasOwnProperty("facebook")) %>
。有.toObject()
控制台的:typeof true
,没有控制台的typeof false
。我觉得很奇怪。用户是猫鼬文档吗?如何在js中使用。object ?哦,等一下。我只是在想,是因为它是在"<%%>
"它连接到服务器端代码,也许我有猫鼬需要在我的server.js
为什么我要使用toObject来获得true
值?
我认为我不需要使用.toObject()
这就是我在我的。js文件:res.render("editProfile", {aboutUser : returnedUser, user : req.user});
我认为req.user
是从护照不是猫鼬。
{ _id: 581a2chan3changed727, defaultImage: 'https://scontefrfrxxffbcdn.net/v/t1.0-1/s148x148/29731_575634691740_1085883_n.jpg?oh=797bc81addf3611309changedoe=588AC839', urlname: 'Jacchanged', momented: 'Nov 2, 2016', username: 'Jack Schuldenfrei', __v: 0, usefulness: [], createdOn: Wed Nov 02 2016 14:15:47 GMT-0400 (Eastern Daylight Time), shortId: 'rkn8powgl', pointsRecord: [], repPoints: 0, facebook: { posts: '{"email":"jschuldenfreiGTGTGTgchanged,"name":"Jack Schuchange","gender":"male","picture":{"data":{"height":148,"is_silhouette":false,"url":"https:''/''frfr.net''/v''/t1.0-1''/s148x148''/29731_575634691740_1fr5883_n.jpg?oh=797bc81addf36113e0933a67eef32ab9&oe=588AC839","width":93}},"id":"10100584555845400"}', gender: 'male', email: 'jschuldenfredu', name: 'Jack changes', token: 'EAAPs693O1UMBAHwTcyZAPtRiXrwvxrBWhGCJZCQlAIfHRZAiCLY3tYDVoviB4yDrK68WrsUnuxlcHfUJE984aAvWOnFZASqbUjYZAhHnsL0mFCZCNRQwsn3oJn1acu1qnSPFko6I3ShZAtPIMumrVlpVxR0ZD', id: '1010058386584400' }, reviews: [] } { _id: 581a2d53380e4c70ac728, userId: 581a2d380e4c7037aac727, username: 'Jack changed', urlname: 'Jachanged', __v: 0, question1: { name: 'This is for question1' } }
我通过在ejs文件中执行<%=user%>
来获取用户对象。
你想要的是.lean()
通常passport的序列化配置看起来像
// Serialize sessions
passport.serializeUser(function (user, done) {
done(null, user.id);
});
// Deserialize sessions
passport.deserializeUser(function (id, done) {
User.findOne({
_id: id
}, '-salt -password', function (err, user) {
done(err, user);
});
});
更改反序列化过程,如
// Deserialize sessions
passport.deserializeUser(function (id, done) {
User.findOne({
_id: id
}, '-salt -password')
.lean() // lean converts mongoose.Document to Plain Javascript Object
.exec(function (err, user) {
console.log(user instanceof mongoose.Document) // false
done(err, user);
});
});
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在对象数组中查找多个值的d3范围
- Javascript:根据对象的嵌套数组中的值,在数组中查找对象的索引
- 如何从数组中查找唯一对象
- 使用lodash查找具有truthy值的JS对象的属性
- 正在数组中查找对象
- 在prototypejs中查找对象的类
- Undercore:查找数组中出现频率最高的对象
- 通过知道对象的id在JSON中查找对象
- 查找关键字并创建新对象
- Javascript在JSON中查找对象(我使用Angular)
- 查找对象数组是否包含其中一个标记的最快方法
- 查找数组's按属性不存在于另一个数组中的对象
- JSON.parse 返回 [对象对象] 查找访问对象的属性
- 角度指令与对象查找的双向绑定
- 将数组转换为快速对象查找
- jQuery对象查找只在一个子对象上失败
- Javascript嵌套对象查找,从字符串,没有eval
- RegExp对象查找和替换不起作用
- 如何使用保存的 jQuery 对象查找后代