我使用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 :(得分: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