0
我正在從bookshelfjs
進行一個簡單的會話存儲,但我需要正確設置時間戳列。我想現在寫()+ TTL間隔爲1ms列的TTL,但我不記得如何把它做,或者如何觸發該列的原始內容:我如何在Bookshelfjs和knex中編寫此代碼
var Session = Models.Bookshelf.Model.extend({
tableName: 'sessions',
idAttribute: 'id'
},{
get: Promise.method(function(sid){
console.log("Fetching SID = ", sid);
return new this({id: sid}).fetch();
}),
set: Promise.method(function(sid, session, ttl){
console.log("Setting SID = ", sid);
console.log("Setting SID session = ", session);
console.log("Setting SID ttl = ", ttl);
new this({id: sid}).save({session: session, expiry: "(now() + " + ttl + " * interval '1 ms')" });
}),
destroy: Promise.method(function(sid){
this.destroy({id: sid});
})
});
原從KOA-PG-會話查詢:
UPDATE %I.%I SET session = $1, expiry = (now() + $2 * interval '1 ms') WHERE id = $3;
我敢肯定,這與Knex的原始查詢格式,但我無法找到設置該列的值在文檔中正確的部分。我不想在字符串中寫完整的查詢,我想知道如何爲單個列'過期'做到這一點。
這實際上是我昨晚怎麼想通了,我是來這裏發佈結果: new this({id:sid})。save({session:session,expiry:this.Bookshelf.knex.raw(「(now()+」+ ttl +「* interval'1 ms 「)「)}); –