然后调用蓝鸟的函数

时间:2017-05-31 20:13:13

标签: node.js promise bluebird

如何调用then()内的函数?我是Bluebird的新手,之前我只是简单地触发回调来通知被调用的函数是用它完成的。

这是我的“主要代码”,它将语言环境数据插入我的Mongo和Redis数据库。

var promise = Language.findOne({}).exec()

promise.then(function(languages) {
    /* If collection is empty initialize it */
    if(!languages)
        return insertLanguagesIntoMongoDB()
})
.then(function() {
    /* Make sure it's cached in Redis */
    return insertLanguagesIntoRedis()
})
.catch(function(err) {
    throw err
})

这就是我的函数的样子,但它说“回调不是函数”:

function insertLanguagesIntoRedis(callback) {
    logger.info("Inserting languages into redis db")
    var promise = Language.find({}).exec()
    promise.then(function(languages) {
        if(!languages)
            throw new Error("Couldn't find any languages in MongoDB's Language collection")

        var languageJson = []
        for(var i=0; i<languages.length; i++) {
            var object = {}
            object.id = languages[i].iso_code
            object.text = languages[i].name_en
            languageJson.push(object)
        }
        redis.set('languages', JSON.stringify(languageJson))
        return callback()
    })
    .catch(function (err) {
        throw err
    })
}

那么我如何正确定义和调用我的insertLanguagesIntoRedisinsertLanguagesIntoMongoDB函数?

0 个答案:

没有答案