2016-04-02 66 views
0

我開始一個項目使用sails.js和我有點困惑的東西。sails.js更新或添加新行

我有一個結構這樣

[ 
    { 
    "logins": { 
     "1": { 
     "login time": "2016-04-02T11:40:06.731Z" 
    } 
    } 
    "username": "test", 
    "password": "test", 
    "createdAt": "2016-04-02T11:40:06.731Z", 
    "updatedAt": "2016-04-02T11:40:06.731Z", 
    "id": "56ffaf9692bcf108169ef7c8" 
    } 
] 

現在,當再次有用戶登錄,最好是我想要的數據看起來像這樣

[ 
    { 
    "logins": { 
     "1": { 
     "login time": "2016-04-01T11:40:06.731Z" 
    }, 
     "2": { 
     "login time": "2016-04-02T11:40:06.731Z" 
    } 
    } 
    "username": "test", 
    "password": "test", 
    "createdAt": "2016-04-01T11:40:06.731Z", 
    "updatedAt": "2016-04-01T11:40:06.731Z", 
    "id": "56ffaf9692bcf108169ef7c8" 
    } 
] 

但是,我不能爲活我想出瞭如何在用戶的「登錄」下「更新」或「插入」一行。

創建第一條記錄是好的,到目前爲止我所能想到的最好的方式是讀取登錄到緩衝區的當前值,然後重新插入所有值。

這似乎很笨拙。有沒有人知道如果帆有一些內置的方法來支持我想要實現的?

回答

0

我會改變你的'登錄'參數到數組。比你可以在更新時使用$ push。水線只支持$設置操作,所以如果你想這樣做,你需要使用.native()這樣的:

Model.native(function(error,collection){ 
    collection.update(
     {_id:YOURID}, // where condition 
     {$push:{logins:new Date()}}, // push new value to array 
     {}, // options 
     function(error,result){} // callback 
    ) 
}) 

要查看可以使用本機做些什麼,看到Node.js MongoDB Driver API - Collections