我创建了一个pre-init中间件函数,用于格式化模式中的Date字段。
StadiumSchema.pre('init', function(next, stadium) {
let date = new Date(stadium.built);
let built = date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear();
stadium.built = built;
console.log(stadium);
console.log(built);
next();
});
在该功能中,它确实显示了stadium.built已被更改。但是在体育场内没有改变的功能之外没有改变。
答案 0 :(得分:1)
就我记忆而言,回调函数中的参数顺序是不同的,例如:
StadiumSchema.pre('init', function(stadium, next) {
let date = new Date(stadium.built);
let built = date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear();
stadium.built = built;
console.log(stadium);
console.log(built);
next();
});
不过,如果你在这里没有做任何异步工作,那么你也可以让它同步,如:
StadiumSchema.pre('init', function(stadium) {
let date = new Date(stadium.built);
let built = date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear();
stadium.built = built;
//console.log(stadium);
//console.log(built);
});
但是,请参阅文档以获取更多信息。