node.js - 在 mongoose 的嵌套查询中按 id 查找用户
问题描述
我有一个这样的查询:
router.get('/match', (req, res, next) => {
User.findOne({ _id: req.query.id }, (err, userfound) => {
if (err) return next(err);
console.log('userfound ', userfound);
User.find({ gender: getGender(userfound.doc.gender), age: { $gte: (userfound.doc.age - 5), $lte: userfound.doc.age } }, function (err, matches) {
res.json({
success: true,
matches: matches,
message: "Successful"
});
});
});
它以不友好的模式返回文档:
userfound = model = {
'$__': InternalCache {
strictMode: true,
selected: { },
shardval: undefined,
saveError: undefined,
validationError: undefined,
adhocPaths: undefined,
removing: undefined,
inserting: undefined,
version: undefined,
getters: { },
_id: 5d69463e768de047b6aaf739,
populate: undefined,
populated: undefined,
wasPopulated: false,
scope: undefined,
activePaths: StateMachine {
paths: [Object],
states: [Object],
stateNames: [Array]
},
pathsToScopes: { },
ownerDocument: undefined,
fullPath: undefined,
emitter: EventEmitter {
_events: [Object: null prototype] { },
_eventsCount: 0,
_maxListeners: 0
},
'$options': true
},
isNew: false,
errors: undefined,
_doc: {
created: 2019 - 08 - 30T15: 52: 30.048Z,
__v: 0,
name: 'Chris',
dob: 2019 - 12 - 28T00: 00: 00.000Z,
age: -1,
gender: 'male',
tongue: 'xxxxx',
religion: 'xxxxx',
mobile: '9999999999',
email: 'chris.k20@gmail.com',
password: '$2a$10$LcxHafqgwJVCBDupR4v7wePkvLCQzs8eilq.QpQ4q2MJ8IfcnUAfa',
picture: 'https://gravatar.com/avatar/fe5efae62aa7f13c40efec1fb197ac98?s200&d=retro',
_id: 5d69463e768de047b6aaf739
},
'$init': true
}
对象内部的实际内容是 this:
_doc: {
created: 2019 - 08 - 30T15: 52: 30.048Z,
__v: 0,
name: 'Chris',
dob: 2019 - 12 - 28T00: 00: 00.000Z,
age: -1,
gender: 'male',
tongue: 'xxxxx',
religion: 'xxxxx',
mobile: '9999999999',
email: 'chris.k20@gmail.com',
password: '$2a$10$LcxHafqgwJVCBDupR4v7wePkvLCQzs8eilq.QpQ4q2MJ8IfcnUAfa',
picture: 'https://gravatar.com/avatar/fe5efae62aa7f13c40efec1fb197ac98?s200&d=retro',
_id: 5d69463e768de047b6aaf739
}
解决方案
用于toObject()
对象和lean()
对象数组
推荐阅读
- java - 使用 selenium 启动 Microsoft Edge Chromium 浏览器
- neo4j - 在 Cypher 中创建一个仅返回整个图的子集的查询
- css - Bootstrap 4:超小屏幕上的响应式布局
- java - DJI Android SDK 集成演示教程问题
- excel - Excel- IF 2 值在同一行 THEN
- javascript - 返回的 foreach() 函数比值本身未定义
- c - 从搜索的目录创建目标
- git - 如何在 git repo 配置中包含多个文件?
- c# - 通过引用传递给线程 C#?
- excel - 在excel中从索引匹配返回的列表中间摆脱0