创建实例后无法使用实例。 Gettting错误User.find在尝试获取文档时不是函数

时间:2018-03-05 07:05:58

标签: javascript node.js express mongoose

我正在使用带有MongoDB的expressjs框架的nodejs。在mongoose中创建实例为 var User = new userModel(data)。这是我的模型 user.js

const userModel = mongoose.model("User", UserSchema);
module.exports.listUser = function() {
    var deferred = Q.defer();   
    var User= new userModel();
    User.find({}, function (err, list) {
        if (err) {           
            deferred.resolve({status: 'error'});
        } else {
            deferred.resolve({ status: 'ok', list: list});
        }      
    });
    return deferred.promise;
};

2 个答案:

答案 0 :(得分:0)

所以你只是混合了一点东西。从Mongoose: Model文档中可以看出,您需要使用模型(在您的案例中为userModel)来访问不同的CRUD操作。

为了创建用户文档,您可以像使用语法一样使用语法,但也必须提供属性。

var User = new userModel({
     name: 'Indianv',
     website: 'stackoverflow.com',
     .......
});

然后,为了在User集合中查找文档,您应该使用:

userModel.find({ name: 'Indianv' }, function(err, userDoc) {
     if(!err) {
          .....
     }
});

答案 1 :(得分:0)

根据mongoose documentation,您应该按照以下过程执行find或其他数据库操作

var Person= require('mongoose').model('Person');
exports.getContactList = (req, res) => {
Person.find({}, {}, { limit: 20 }, (error, list) => {
if (error)
  res.send(error)
res.json(list)
});

}

一次获取所有文档可能不是一个明智的想法,因此您可以在查询中应用limit,然后执行分页以获取其他相关文档