sails.js更新或添加新行

时间:2016-04-02 11:45:20

标签: javascript sails.js waterline

我使用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"
  }
]

然而,我不能为我的生活弄清楚如何更新"或"插入" "登录"下的新行为我的用户。

创建第一条记录很好,到目前为止我能想到的最好的方法是将登录的当前值读入缓冲区,然后重新插入所有值。

这看起来很笨拙。有谁知道帆是否有一些内置的方法来支持我想要实现的目标?

1 个答案:

答案 0 :(得分:0)

我会将'Logins'参数更改为array。比你可以在更新时使用$ push。 Waterline仅支持$ set操作,所以如果你想这样做,你需要使用.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