2017-07-26 24 views
0

我在JS中编写Alexa的技巧,我在创建用户对象时遇到问题,因此超过1个用户可以同时使用我的代码。 我试图做它用这种方式在我的代码开头:根据会话ID创建对象变量

class MyUser { 
    constructor() { 
    this.name= ""; 
    this.number = 0; 
    this.question= ""; 
    } 
} 
var myUser = new MyUser(); 

,但它没有任何意义:(我如何创建一个用户根据会话的每个用户,页面获取会话帐户及我得到这个变量?每次用户启动我的技能:?

event.session.user.userId 

如何动态使用此功能,因此,如果每个用户开始我的剧本我肯定有一个新的用户对象创建和2个或更多的人可以使用我的技能并行

它是有道理的喜欢这个?

class MyUser { 
    constructor() { 
    this.name= ""; 
    this.number = 0; 
    this.question= ""; 
    } 
} 
event.session.user.userId = new MyUser(); 

所以我能进入价值名称?喜欢这个? console.log(“event.session.user.userId.name”);

我想创建在那个地方会话用户对象:

var newSessionHandlers = { 
    "NewSession": function() { 

    console.log(this.event.session.user.userId); 

     this.emit("Welcome"); 
    } 
+0

https://stackoverflow.com/questions/5117127/use-dynamic-variable-names-in-javascript – ddeadlink

+0

看起来你已经得到一个'this.event.session.user'对象。不要自己创建它。 – Bergi

+0

但我希望我可以连接一个值到这个对象。例如,我问我的用户一个名字。用户说我的名字是安娜,然后我可以打电话给这个名字this.event.session.user.name,我会得到安娜的名字 –

回答

1

什么是你的情况event.session?通常,会话持久性有很多解决方案。如果此应用程序是Web服务器,则可以使用完整的库会话提供程序,如中间件一样实施。对象将在Express活宿主进程中,像这样:

app.set('trust proxy', 1) // trust first proxy 
app.use(session({ 
    secret: 'keyboard cat', 
    resave: false, 
    saveUninitialized: true, 
    cookie: { secure: true } 
})) 

如果你需要一些持久性,在以前的配置使用store选项,如store: new RedisStore,