現在、ユーザーが投稿した回答を追跡するmongoデータベースがあります。ユーザーがすでに入力した回答を入力すると、それは「はい」または「いいえ」です。答えが変わったかどうかを確認したいのですが、問題は、これが時間の半分しか働いていないことです。Javascriptブーリアンを比較する
以下に、ユーザーがnode.jsサーバーに回答を送信するときに質問コントローラから呼び出される質問サービスと呼ばれるセールサービスがあります。
QuestionServer.js
var ObjectID = require('mongodb').ObjectID;
module.exports = {
submitAnswer: function(tokenKey, questionId, answer, done) {
User.findOne({tokenKey: tokenKey}).exec(function (err, findOneRecord){
if(findOneRecord) {
var qId = ObjectID(questionId);
QuestionsAnswered.findOrCreate({question: qId, user: findOneRecord.id}).exec(function createFindCB(error, createdOrFoundRecord){
if(error) {
done(error, findOneRecord, null);
}else if(createdOrFoundRecord){
var oldAnswerChanged = QuestionService.submitAnswerCheck(createdOrFoundRecord.answer, answer);
console.log("Old Changed Answer = " + oldAnswerChanged);
createdOrFoundRecord.answer = answer;
createdOrFoundRecord.save(function(saveErr) {
QuestionService.submitCount(questionId, answer, oldAnswerChanged, done);
});
}
});
}
});
},
submitAnswerCheck: function(recordAnswer, answer) {
console.log("recordAnswer = " + recordAnswer);
console.log("answer = " + answer);
recordAnswer = Boolean(recordAnswer);
answer = Boolean(answer);
if(recordAnswer != answer){
return true;
}
return false;
}
}
あなたは私のsubmitAnswerCheck関数の上に自分のコードから見ることができるように私は、この関数に渡されるブール値は常にプリミティブと決してブールオブジェクトであることを確認します。
以下は、すべてのコンソールログの出力がサーバーに送られています。
以下の出力に関する追加の注記:!= to!==を変更してもコンソールからの出力は変更されません。以下の回答はまだ同じです。コンソールに
出力:
recordAnswer = true
answer = true
Old Changed Answer = false
recordAnswer = true
answer = false
Old Changed Answer = false
recordAnswer = false
answer = false
Old Changed Answer = true
recordAnswer = false
answer = true
Old Changed Answer = true
recordAnswer = true
answer = true
Old Changed Answer = false
私が見たいのは何の出力例2と4は「オールド・変更回答」のためにtrueを返しますが、何が起こっているように見えることはrecordAnswerがある時はいつでもということです両方falseの場合、submitAnswerCheckは常にtrueを返します。私はブールプリミティブとブーリアンオブジェクトまたは場合との違いを理解し欠場していた場合
module.exports = {
attributes: {
question: {
model: "question",
required: true
},
user: {
model: "user",
required: true
},
answer: {
type: "boolean",
boolean: true
}
}
};
私はわからない
QuestionsAnswered.js:
最後に、ここでは、MongoDBのためにブール値を保存しているモデルであり、私のモデルでブール値を設定するときに、私が見逃している何かがあります。他の人にjavascript/sails.jsのブール値を比較するときにこの問題が発生していますか?このarticleとしてオフ問題
が第一発見