React Meteor:findOne()在if中不起作用

时间:2017-06-03 05:08:59

标签: reactjs meteor

我遇到了数据流问题。我正在使用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 = '';
  }

1 个答案:

答案 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