我从一个简单的mongoose查询得到 RangeError:超出最大调用堆栈大小,该查询在mongo native app中完美运行。我正在尝试从我的文档更新数组中的特定元素。
模式
const UserSchema = new mongoose.Schema({
username: {
type: String,
unique: true,
required: true,
trim: true
},
discovery: []
})
路线
router.post(
'/discovery/:page',
session.requiresLogin,
(req, res, next) => {
indexController.discovery(req, res)
}
)
控制器
discovery: (req, res) => {
userModel.update({
username: req.session.username,
'discovery.name': req.params.page
}, {
$set: {'discovery.$.status': true}
}, (err) => {
if (err) throw err
res.status(200).send({
status: err ? 201 : 200,
msg: err ? 'Error' : 'Success'
})
})
}
模型
UserSchema.statics.update = (fquery, uquery, callback) => {
User.update(fquery, uquery, (err) => {
if (err) return callback(err)
callback(null)
})
}
发现数组是一个填充了name [String]
和status [Boolean]
当我在本机mongo应用程序中运行此查询时,对象会正确更新,但通过我的节点应用程序,mongoose会引发范围错误。我错过了什么吗?