Mongoose - 使用require引用另一个模型

时间:2015-09-16 12:15:55

标签: javascript node.js mongodb mongoose mean-stack

我尝试做的是更新一个集合,奖品,然后根据该更新的结果,另一个集合,联盟。

我有以下代码:

app.post('/auth/prize/:prizeId', function(req, res) {
    console.log('POST /auth/prize/' + req.params.prizeId);
    if (req.user) {
        var mess = 'JOINED';
        var query = {...};
        var update = {...};
        Prize.findOneAndUpdate(query, update, function(err, result) {
            if (err || result === null) {
                mess = 'ERROR Incorrect password';
                res.send(mess);
                return;
            }
            var League = require('./leagues_api');
            var queryL = {...};
            var updateL = {...};
            League.findOneAndUpdate(queryL, updateL, function(e, r) {
                if (e || r === null) {
                    mess = 'ERROR Incorrect password';
                }
                res.send(mess);
            });
        });
    } else {
        res.send(401, 'Not Admin!');
    }
});

所以,问题是我看到了一个错误:

[TypeError: Object #<Object> has no method 'findOneAndUpdate']

我有两个单独的文件来保持一切易于管理,所以我有这个文件prizes_api.js和另一个文件leages_api.js,它已经在Schema和Model for League中定义了它:

var leagueSchema = new mongoose.Schema({...});
var League = mongoose.model('League', leagueSchema);

我在其他地方使用相同的样式,但由于某种原因,在此文件中我看到错误失败。对此有任何建议吗?

谢谢你,加里。

1 个答案:

答案 0 :(得分:2)

如果调用require('./leagues_api')未返回League模型,则您的module.exports未在该文件中设置。

它应如下所示:

module.exports = League;