0

我想从闭包函数中得到结果。我也尝试过做一些回调函数,但我仍然遇到同样的问题。我能够在闭包/回调中控制台记录结果,但无法将响应返回到变量中。我尝试了一些已经发布的解决方案,但未能成功。

这是我的代码:

var fcmTokens = [input.fcmToken];
        switch(topicType) {
            case 'post':
                const username = (input.username).toLowerCase();
                const userPrefix = Config.get(`setting.topic.user.prefix`);
                fcmTokens =  Topic.get(`${userPrefix}-${username}`, {AttributesToGet : ['fcmToken']}, function(err,foundTopic) {
                    var result = foundTopic.attrs.fcmToken;
                    console.log(result) //Able to log my expected result
                    return result;
                })

                console.log(fcmTokens) //undefined

            break;
        }
4

1 回答 1

0

我能够通过安装一个名为 promisified-vogels 的库来解决我自己的问题,因为我的模型正在使用 DynamoDB。

从我上面的当前代码到这个:

let userTopic =  await Topic
                    .getAsync(`${userPrefix}-${username}`,{ConsistentRead: true, AttributesToGet : ['fcmToken']}) //from original function "get" changed to "getAsync" 
                    .then(function(user){
                        return user.attrs.fcmToken;
                    })
                    .catch(function(err){
                      console.log(err)
                    });
fcmTokens = userTopic;  // i was able to get the list of record im expecting.

参考库:https ://github.com/servel333/vogels-promisified

于 2021-04-12T16:02:51.237 回答