如何将参数从一个承诺传递到链中的下一个?

时间:2017-04-24 04:26:50

标签: javascript node.js mongoose

这是已经需要Mongoose和Bluebird的node.js。

我没有承诺,有以下内容:

Post.create({
  title: "How to cook the best burger pt 4",
  content: "Mustard!"
}, (err,post) => {
  console.log(post);
     User.findOne({name: 'Bob Belcher'}, (err,user) => {
       console.log('found user')
       user.posts.push(post)
       user.save((err,data) => {
         console.log(data)
       })
     })
})

我想转换为使用Promises。 我的尝试(不起作用)如下:

var postPromise = Post.create({
      title: "How to cook the best burger pt 4",
      content: "Mustard!"
    }
postPromise
  .then((post) => {
    return User.findOne({'name': 'Bob Belcher'}).exec()
  }
  .then((user) => {
    user.posts.push(post)   // <--- this post was within the scope of previous thenable hence inaccessible here
    return user.save()
  })
  .catch((err) => {
    console.log(err)
  })

问题是我不确定如何将'post'从'post'promise子句传递给'user',以便我可以将它实际插入到数据库中。使用回调地狱,所有内容都是嵌套的,因此所有父变量都在范围内且易于访问。我仍然试图将我的大脑映射到以承诺的方式思考。我希望这很清楚。感谢。

0 个答案:

没有答案