使用猫鼬我正在做:
var postSchecma = mongoose.Schema({
title: String,
body: String,
link: String,
voting: {
has: {
type: Boolean,
default:
false
},
canVoteFor: [mongoose.Schema.Types.Mixed],
votedFor:{},
voteDates:{}
},
comments: [mongoose.Schema.Types.Mixed],
date: {
type: mongoose.Schema.Types.Mixed,
default:
new Date().getTime()
}
}, {
strict: false,
safe:true
})
和
postSchecma.methods.vote = function(voteFor, callback) {
var self = this;
if(self.voting.canVoteFor.indexOf(voteFor) < 0) {
callback(new Error('Error: Invalid Thing To Vote For'));
return;
}
this.voting.voteDates[voteFor].push(new Date().getTime())
this.voting.votedFor[voteFor]++
s = this;
this.save(function(err) {
if(err) {
callback(err)
}
console.log(err);
console.log("this:"+ s);
callback(s)
})
}
在 postSchecma.methods.vote 中 this.voting.votedFor[voteFor] 的值是正确的。但是当我查询数据库时,它是旧值。如果它有帮助,我在 2 个文件中使用 db,并且这些方法可能不是完全重复的。我也知道它与猫鼬有关,因为我可以使用 mongoDB GUI 将记录更改为不同的值,并且效果很好。如果您需要更多信息,请告诉我,谢谢,Porad