我遇到了数据流问题。我正在使用Meteor和React。
我想做的是这样的:
如果有一个记录具有相同的“country”和“question_id”,则不要创建任何内容,只需增加“yes / no”值即可。否则,创建一个新记录并增加“是/否”值。
然而,无论记录是否已存在,每次都会创建一条新记录。我检查了“country”和“question_id”。这不应该创建具有相同国家和question_id的记录,是吗?我想在数据准备好之前会执行一些行.....我怎样才能使代码逐步进行?还是有其他问题?如果你给我任何线索,我将非常感激。谢谢。
handleAlternate(event){
event.preventDefault();
this.dataInsert(false);
}
handleSubmit(event) {
event.preventDefault();
this.dataInsert(true);
}
dataInsert(yesflag){
const country = ReactDOM.findDOMNode(this.refs.textInput).value.trim();
const id = this.props.match.params.id;
if(Answers.findOne({country: country, question_id: id}) == null){//Why is this always true?
Answers.insert({
country,
question_id: id,
yes: 0,
no: 0,
createdAt: new Date(),
});
}
const doc = Answers.findOne({country: country, question_id: id});
console.log(Answers.findOne({country: country, question_id: id}));
if(yesflag == true){
Answers.update({_id: doc._id},
{ $inc: {yes: 1}});
}else{
Answers.update({_id: doc._id},
{ $inc: {no: 1}});
}
ReactDOM.findDOMNode(this.refs.textInput).value = '';
}
答案 0 :(得分:0)
Collection.findOne()
按排序和跳过选项排序,查找与选择器匹配的第一个文档。如果找不到匹配的文档,则返回undefined
。
所以你必须这样做
let answer = Answers.findOne({country: country, question_id: id};
if(!answer){}
或
let totalAnswers = Answers.find({country: country, question_id: id}).count();
if(totalAnswers == 0) {}
详细文档CLICK HERE