私がやっているマングースを使用して:
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)
})
}
postSchema.methods.vote の this.voting.votedFor[voteFor] の値は正しいです。しかし、データベースにクエリを実行すると、古い値になります。それが役立つ場合、2つのファイルでデータベースを使用しており、メソッドが完全に重複していない可能性があります。また、mongoDB GUIでレコードを別の値に変更でき、正常に動作するため、それがmongooseの何かであることも知っています。さらに情報が必要な場合はお知らせください。ありがとう、Porad