Mongoose Schema使用' new'将其作为导出模块的一部分引入时

时间:2018-01-05 19:42:05

标签: node.js mongodb mongoose import

好的,所以我在使用Mongoose的同时获得了以下带有userSchema的代码,我们尝试按如下方式导出它:

module.exports  = {
    model:mongoose.model('User',userSchema),
    getById:function(id,callback){
        model.findById(id,callback);
    },
    getByUsername:function(username,callback){
        model.findOne({username:username},callback);
    }
}

我想像这样导入....

const user = require('../models/user');
...
let newUser = new user.model({
        name:req.body.name,
        email:req.body.email,
        pasword:req.body.password,
        username:req.body.username
    });

并且它不起作用主要是因为user.model它返回未定义...现在我知道我可以做类似以下的事情并且工作< / em>

module.exports = model:mongoose.model('User',userSchema);

module.exports.myMethods { 
    getById:function(id,callback){
        model.findById(id,callback);
    },
    getByUsername:function(username,callback){
        model.findOne({username:username},callback);
    }
}

,导入时一切正常如下....

const user = require('../models/user');
...
let newUser = new user({
        name:req.body.name,
        email:req.body.email,
        pasword:req.body.password,
        username:req.body.username
    }); 

问题是你如何使第一种方法起作用?

1 个答案:

答案 0 :(得分:1)

第一种方法应该有效。你确定user.model未定义吗?

你也可以尝试这样的事情:

let user = {};

user.model = mongoose.model('User', userSchema);

user.getById = function(id,callback){
    model.findById(id,callback);
}

user.getByUsername = function(username,callback){
   model.findOne({username:username},callback);
}

module.exports = user;