我试图覆盖 mongoose 模型的 setter,因为我想创建自己的 Date 对象,但是检查 documentation我做了以下操作,但 setter 仍然没有被调用:
var mongoose = require('mongoose');
function strToDate(dateStr){
var dateStr = dateStr.split('/');
console.log('parsed a date!');
return new Date(dateStr[0],dateStr[1],dateStr[2],dateStr[3],dateStr[4], dataStr[5]);
}
var infoSchema = new mongoose.Schema({
code: {type : String, require: true},
valve: {type : Number, require: true},
dataTime: {type: Date, require: true, set: strToDate},
status: {type: Boolean, require: true, default: false },
elapsedTime: 0
});
var dataLogSchema = new mongoose.Schema({
boardId: {type: String, require: true, unique: true},
logInfo:[infoSchema]
});
module.exports = mongoose.model('DataLog', dataLogSchema);
出了什么问题?我正在使用 Mongoose 4.0.5
最佳答案
问题是您的 strToDate
函数中有一个拼写错误,导致该函数抛出 ReferenceError
异常(Mongoose 显然只是吃掉了该异常)。 dataStr[5]
应该改为 dateStr[5]
。
因此只需将该函数的最后一行更改为:
return new Date(dateStr[0],dateStr[1],dateStr[2],dateStr[3],dateStr[4],dateStr[5]);
关于node.js - Mongoose 模式 setter 覆盖函数未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31038353/