我为猫鼬方案添加了一种方法。创建实例时,可以调用该对象,但是当我查询该对象并尝试调用相同的方法时,它将返回异常。
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();
});
我看不到我在哪里犯错,
还有建议吗?
谢谢。
答案 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
。