Mongoose result.toObject保留Schema方法

时间:2016-12-20 18:57:54

标签: node.js function mongoose

因为我无法编辑非精益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"

这可以解决吗?

1 个答案:

答案 0 :(得分:1)

方法和模型是Mongoose的一部分,而不是MongoDB。

每当您致电.toObject()时,您都会收到一个ready for storage in MongoDB的对象。

如果您确实需要进行任何类型的价值转换,我会在您将价值交付给用户之前执行此操作。作为时间格式化,如果您正在构建API,我会在客户端中执行此操作;如果您正在使用模板,请尝试在同一模板上转换值。