Javascript 根据会话id创建对象变量
我正在用JS为Alexa编写一个技巧,我在创建用户对象时遇到了一个问题,因此超过1个用户可以同时使用我的代码。 我在代码开始时尝试过这样做:Javascript 根据会话id创建对象变量,javascript,node.js,class,oop,initialization,Javascript,Node.js,Class,Oop,Initialization,我正在用JS为Alexa编写一个技巧,我在创建用户对象时遇到了一个问题,因此超过1个用户可以同时使用我的代码。 我在代码开始时尝试过这样做: class MyUser { constructor() { this.name= ""; this.number = 0; this.question= ""; } } var myUser = new MyUser(); 但这毫无意义:如何根据会话创建用户?每个Alexa用户都会获得会话用户ID,每次用户开始我的技能时
class MyUser {
constructor() {
this.name= "";
this.number = 0;
this.question= "";
}
}
var myUser = new MyUser();
但这毫无意义:如何根据会话创建用户?每个Alexa用户都会获得会话用户ID,每次用户开始我的技能时,我都会得到这个变量:
event.session.user.userId
如何动态使用此功能?因此,如果每个用户都启动我的脚本,我肯定会创建一个新的用户对象,2个或更多的人可以并行使用我的技能
像这样的事情有意义吗
class MyUser {
constructor() {
this.name= "";
this.number = 0;
this.question= "";
}
}
event.session.user.userId = new MyUser();
那么我能进入值名称吗?这样地?
console.logevent.session.user.userId.name
我想在该位置创建会话用户对象:
var newSessionHandlers = {
"NewSession": function () {
console.log(this.event.session.user.userId);
this.emit("Welcome");
}
在您的案例中,event.session是什么?一般来说,会话持久性有很多解决方案。如果此应用程序是web服务器,则可以使用像中间件一样实现的完整库会话提供程序。对象将位于主机进程中,如Express中所示:
如果您需要一些持久性,可以使用store选项,比如store:newredistore,
在以前的配置中。看起来您已经获得this.event.session.user对象。不要自己创建它。但我希望我可以将一个值连接到此对象。例如,我问我的用户一个名字。用户说我的名字是Anna,然后我可以调用这个名字this.event.session.user.name,我会得到Anna的名字
app.set('trust proxy', 1) // trust first proxy
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}))