猫鼬查询未返回实际对象

时间:2018-09-10 17:56:01

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

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

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();
}); 

我看不到我在哪里犯错,

还有建议吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

这是因为您尚未创建User的对象。

module.exports = mongoose.model('User', userSchema);文件中将let User = module.exports = mongoose.model('User', userSchema);更改为User.js,并在调用打印方法之前创建User对象,例如:

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