Mongoose模型是另一个模型pre save hook中的空对象

时间:2017-04-24 09:35:30

标签: node.js mongodb

这是在Group模型中,在组模型中保存prehook,其正则表达式已更新以供用户搜索。但是mongoose返回“User.find不是函数”,当我在console.logged用户时返回一个空的Object({})。为什么我不能在Group中查询用户保存prehook?

var User = require('./User')
...
    _schema.pre('save', function (next) {
        this.regex = ''
        if (!this.users) { return next() }
        var userIds = this.users.map(s => s._id)
        User.find({ _id: { $in: userIds } }).select('name surname').lean().then(docs => {
            docs.forEach(d => {
                this.regex += (' ' + d.name + ' ' + d.surname)
            })
            next()
        })
    })

1 个答案:

答案 0 :(得分:1)

只需移动钩子内的用户定义即可。

 _schema.pre('save', function (next) {
     var User = require('./User')
        this.regex = ''
        if (!this.users) { return next() }
        var userIds = this.users.map(s => s._id)
        User.find({ _id: { $in: userIds } }).select('name surname').lean().then(docs => {
            docs.forEach(d => {
                this.regex += (' ' + d.name + ' ' + d.surname)
            })
            next()
        })
    })