redis消息上的异步操作
问题描述:
我试图在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。这是一个很好的方法,还是有其他的选择呢?
答
我已经得到了解决方案,我在另一个节点进程中完成所有redis的工作,所以Mongo连接在redis进程中不可用。
我刚刚在redis进程中创建了另一个连接并解决了这个问题。