因为我无法编辑非精益mongoose结果的属性,所以我使用了result.toObject()
语句,但这也意味着我无法使用我的Schema中定义的方法。
实施例
// Defining the schema and document methods
const User = new Schema({
email: {type: String, required: true, unique: true},
firstname: {type: String, required: true},
registration_date: {type: Date, default: Date.now, required: true},
insert: {type: String},
lastname: {type: String, required: true}
});
User.methods.whatIsYourFirstName = function () {
return `Hello, my firstname is:${this.firstname}`;
};
找到后:
user = user.toObject();
user.registration_date = moment(user.registration_date);
user.whatIsYourFirstName();
// result in "user.whatIsYourFirstName is not a function"
这可以解决吗?
答案 0 :(得分:1)
方法和模型是Mongoose的一部分,而不是MongoDB。
每当您致电.toObject()
时,您都会收到一个ready for storage in MongoDB的对象。
如果您确实需要进行任何类型的价值转换,我会在您将价值交付给用户之前执行此操作。作为时间格式化,如果您正在构建API,我会在客户端中执行此操作;如果您正在使用模板,请尝试在同一模板上转换值。