javascript - 强制 mongoose.save 回调等待写入完成

标签 javascript node.js mongodb mongoose synchronous

我认为这很简单,但我似乎无法让它发挥作用。我有两个过程。一个消费数据,然后另一个装饰它。它们通过队列服务连接。第一个“保存”文档,然后将第二个排队:

// 'post' is a mongoose object

post.save(function (err) {
    if (!err) {
        self.decorate('post', post.service, post.id);
    }
});

服务二接收队列消息,然后尝试查询队列。但是没有找到该项目。该项目确实被写入,如果我在几秒钟后重新运行排队的消息,它会正确找到它。

看起来第二个服务正在尝试在写入完成之前运行。

如何强制 Mongoose 回调同步等待/执行?我试过在连接选项中添加“safe: true”。

最佳答案

请考虑在 save() 方法中使用 promise。

post.save().then(function (savedPost) {
    self.decorate('post', savedPost.service, savedPost.id);
});

关于javascript - 强制 mongoose.save 回调等待写入完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27447478/

相关文章:

php - 构建 JavaScript 对象 PHP 循环时缺少字符

javascript - var express = 需要 ('express' ); var app = express(), 什么是 express()??它是方法还是构造函数?它从何而来

php - Imagick 和 GridFS

mongodb 为每个检索到的文档添加计数器

javascript - 组合 fancyBox 脚本

javascript - 媒体查询和 javascript 不能很好地结合在一起

node.js - MongoDB:如何使用一个模式作为不同文件中定义的不同集合的子文档

javascript - Express + Angular,始终发送 html 请求的索引文件,而不是 api 请求

angularjs - 使用 NodeJs、ExpressJs 验证注册时的电子邮件地址

javascript - 单击选项中的选项时,如何更改音频源?