我现在收到这个错误有一段时间了。我认为承诺会解决这个错误的问题。这是我没有承诺功能的代码。有什么方法可以解决它而不返回承诺吗?
Tag.find({ tag: bmTweet.tag }, function (err, tag) {
if (tag.length === 0) {
bmtTag.tag = bmTweet.tag
Tag.create(bmtTag, function (err, tag) {
user[0].tags.push(tag)
user[0].save()
console.log('Tag created.')
})
}
})
Tweet.create(bmTweet, function (err, tweet) {
user[0].tweets.push(tweet)
user[0].save()
console.log('Tweet saved.')
})
这是我的承诺函数代码:
Tag.find({ tag: bmTweet.tag }, function (err, tag) {
if (tag.length === 0) {
bmtTag.tag = bmTweet.tag
Tag.create(bmtTag, function (err, tag) {
user[0].tags.push(tag)
user[0].save()
console.log('Tag created.')
return Promise.resolve({ msg: 'Worked' })
}).then(function () {
Tweet.create(bmTweet, function (err, tweet) {
user[0].tweets.push(tweet)
user[0].save()
console.log('Tweet saved.')
})
})
}
})
我是新手。所以请帮我找出我的菜鸟错误。谢谢。
答案 0 :(得分:0)
所以我实际上做错了。我想,无论如何都需要调用第二个函数,为什么不反过来呢。因此,我返回了一个 promise 表单 Tweet.create
并向 .then
添加了一个 Tag.create
。这是更新后的代码:
func.tweetCreate(bmTweet, user)
.then(function (msg) {
func.tagFindOrCreate(bmTweet, bmtTag, user);
});
和函数定义:
tweetCreate: function (tweet, user) {
return new Promise(function (resolve) {
Tweet.create(tweet, function (err, tweet) {
user[0].tweets.push(tweet);
user[0].save();
console.log("Tweet saved.")
resolve();
})
})
}