2016-12-05 69 views
1

有人請告訴我爲什麼不同步我的mogoosastic和mongodb? 當我從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} 

什麼是錯的這個代碼...

+0

如何刪除文檔?請提供刪除代碼 – Paradise228

回答

0

我加入這行代碼,一切都OK

.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) 
    })