2017-07-26 130 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,