2017-07-28 50 views
0

我試圖在redis客戶端發佈消息時更新貓鼬模型。redis消息上的異步操作

這是我在做什麼,它的工作

redisClient.on('message', (channel, message) => { 
let data= JSON.parse(message); 

console.log(message); 

let user_id = data.user_id; 
let story_id = data.story_id; 

let ratingDetails = data.ratingDetails; 

User.findById(user_id, (err, user) => { 
    if(err) return console.error(err); 

    user.rating += (ratingDetails.polarity * ratingDetails.rating); 

    console.log(ratingDetails); 

    console.log(user.rating); 

    user.save((err) => { 
     if(err) return console.error(err); 
    }); 
}); 

Story.findById(story_id, (err, story) => { 
    if(err) return console.error(err); 

    story.totalRating += (ratingDetails.polarity * ratingDetails.rating); 

    story.save((err) => { 
     if(err) return console.error(err); 
    }); 
}); 

});

console.log(消息)顯示傳遞的消息,但它不執行任何貓鼬操作。模型沒有被更新。

我第一次使用redis。這是一個很好的方法,還是有其他的選擇呢?

回答

0

我已經得到了解決方案,我在另一個節點進程中完成所有redis的工作,所以Mongo連接在redis進程中不可用。

我剛剛在redis進程中創建了另一個連接並解決了這個問題。