在 NodeJS 中跨事件回调共享变量

Sharing variables across event callbacks in NodeJS

我正在尝试使用 messenger-bot 模块构建一个 FB Messenger 机器人。这是我的示例代码

bot.on('message', (payload, reply) => {
  let userData = payload.message.text;

  bot.getProfile(payload.sender.id, (err, profile) => {
    if (err) {
        console.log(err);
        // throw err
    }
    else {
        text = {
            "attachment":{
                "type":"template",
                "payload":{
                    "template_type":"button",
                    "text":"Pick an option?",
                    "buttons":[
                        {
                            "type":"postback",
                            "title":"Option 1",
                            "payload":"first_option"
                        },
                        {
                            "type":"postback",
                            "title":"Option 2",
                            "payload":"second_option"
                        }
                    ]
                }
            }
        };
        postBack(text, payload.sender.id, profile);
    }
  });
});

bot.on('postback', (payload, reply) => {
    let text = payload.postback.payload;
    bot.getProfile(payload.sender.id, (err, profile) => {
        //Do something with the userData and the selected option
    });
})

现在如何在 "postback" 的事件回调中访问 userData?我只能想到以下解决方案

userData 作为选项有效负载的一部分传递,例如

"buttons":[
    {
        "type":"postback",
        "title":"Option 1",
        "payload":"first_option||"+userData
    }

并在 "postback" 回调中再次解析它。

有更好的方法吗? 换句话说,如何在 NodeJS/ JavaScript?

中跨回调共享变量

假设这需要为多个用户提供服务,因此无法将您的 userData 范围扩大,您需要将其保存在 database/cache 中并从您的 'postback' 中查询,或者使用您的想法来制作它有效载荷的一部分。