2017-07-28 67 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进程中创建了另一个连接并解决了这个问题。