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

问题描述 投票:0回答:2

我正在使用带有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;
};
javascript node.js express mongoose
2个回答
0
投票

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

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

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

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

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

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然后执行分页以获取其他相关文档

© www.soinside.com 2019 - 2024. All rights reserved.