我试图覆盖猫鼬模型的设置器,因为我想创建自己的Date对象,但是检查了documentation并做了以下操作,但该设置器仍未调用:

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


怎么了?我正在使用猫鼬4.0.5

最佳答案

问题是您的strToDate函数中有一个错字,导致该函数引发ReferenceError异常(猫鼬显然只是在吃东西)。 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/

10-12 16:23