从mongoDB中删除记录时,弹出不会与它同步

时间:2016-12-05 13:53:43

标签: node.js mongodb elasticsearch mongoosastic

有人请告诉我为什么没有同步我的mogoosastic和mongodb? 当我从mongoDB中删除记录时,仍会看到记录,直到服务器重新启动。这是我的搜索功能

exports.search = function (req, res) {
  if (!req.query.q) return res.status(400).send('No Query Provided')
  log.error(req.query.q)

  var query = {
    query_string: {
      filtered: {
        query: {
          multi_match: {query: req.query.q,}
        },
        filter: {term: {isDeleted: false}
        }
      }
    }
  }

  User.search(query, (err, results) => {
    if (err) return handleError1(res, err)
    var ret = _.map(results.hits.hits, result => ({
      userID: result._id,
      _score: result._score,
      name: result._source.name,
      loc: result._source.loc,
      info: result._source.info,
      images: result._source.images,
    }))
    return res.send(ret)
  })
}

这是我的架构声明

isDeleted: {type: Boolean, required: true, default: false, es_indexed: true}

这段代码有什么问题......

1 个答案:

答案 0 :(得分:0)

我添加了这行代码,一切正常

.then(groups => {
      return User.findById(uid).exec()
    })
    .then(user => {
      let email = user.credentials.loginEmail + '_' + moment().format('YYYYMMDDEHHmmss')
      if(app.get('env') === 'localtest') {
        email = user.credentials.loginEmail + '_deleted'
      }
      user.credentials.loginEmail = email;
      user.isDeleted = true;
      user.updated.at = new Date();
      user.save()
        .then(user_ =>{
          user.sendInfoUpdate()
          return res.status(204).send()
        })
        .catch(err => {
          return handleError(res, err)
        })
    })
    .catch(err => {
      return handleError(res, err)
    })