【问题标题】:mongoose query doesn't return the actual object猫鼬查询不返回实际对象
【发布时间】:2018-09-11 02:59:07
【问题描述】:

我在我的猫鼬方案中添加了一个方法。当我创建一个实例时,我可以调用该对象,但是当我查询该对象并尝试调用相同的方法时,它会返回异常。

User.js 文件:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
    name: String
    surname: String
});

userSchema.methods.print = function() {
    console.log(this.name, this.surname);
};

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

以下代码按预期工作:

const user = new User({});
user.print();

但是当我查询 mongodb 并尝试在它返回异常的方法上调用 print 时:

User.findById(id, function(err,user){
    // print is not a function
    user.print();
}); 

我看不出哪里出错了,

还有建议?

谢谢。

【问题讨论】:

    标签: node.js mongodb express mongoose mongoose-schema


    【解决方案1】:

    这是因为你还没有创建User的对象。

    User.js文件中的module.exports = mongoose.model('User', userSchema);改为let User = module.exports = mongoose.model('User', userSchema);,并在调用print方法之前创建一个User对象,如:

    let User = require('<path>/User.js'); 需要用文件的实际路径更新path

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 2020-01-22
      • 2017-12-03
      • 1970-01-01
      • 2019-09-29
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多