【发布时间】:2017-04-23 11:08:22
【问题描述】:
目前,我有一个 mongo 数据库来跟踪用户提交的答案。当用户输入他们已经做过的答案时,即是或否,我想检查答案是否已更改。问题是这只工作了一半。
下面我有一个名为 Questions Service 的 Sails 服务,当用户向 node.js 服务器发送答案时,它会从 Questions Controller 调用。
问题服务器.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 函数中的代码中看到的那样,我想确保传递给该函数的布尔值始终是基元,而不是布尔对象。
您将在下面找到发送到服务器的所有控制台日志的输出。
关于以下输出的附加说明,将 != 更改为 !== 不会更改控制台的输出。下面的答案还是一样的。
输出到控制台:
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。
最后这里是将布尔值保存到 mongodb 的模型:
QuestionsAnswered.js
module.exports = {
attributes: {
question: {
model: "question",
required: true
},
user: {
model: "user",
required: true
},
answer: {
type: "boolean",
boolean: true
}
}
};
我不确定我是否错过了理解布尔基元和布尔对象之间的区别,或者在我的模型中设置布尔值时我是否缺少其他东西。其他人在比较 javascript/sails.js 中的布尔值时是否遇到过这个问题?
【问题讨论】:
标签: javascript node.js mongodb sails.js postman