.save()不适用于Sails

时间:2016-10-19 20:22:16

标签: javascript node.js mongodb sails.js sails-mongo

我想在我的某个服务中向所有用户广播通知,通知是用户模型的数组属性。 所以我应该将新通知的对象推送到数据库中的每个用户通知数组。 这是我的代码:

broadcastNotif : function (notif) {
    return new Promise(function (resolve, reject) {
      User.find().exec(function (err, users) {
        if (err) return reject(err);
        else {
          while (users.length>0) {
            var user = users.pop();
            if (user.notifications==undefined)
              user.notifications=[];
            user.notifications.push({
              type : notif.type,
              title : notif.title,
              link : notif.link,
              date : notif.date
            });
            sails.log(user);
            user.save(function (err) {
              if (err) return reject(err);
            })
          }
          return resolve();
        }
      })
    })
  }

sails.log(user)在控制台中打印正确的对象,但当我检查我的mongo数据库时发现没有保存,它们都没有改变。

user.save()出了什么问题?!

1 个答案:

答案 0 :(得分:0)

不幸的是我发现sails在模型中不支持这样的数组属性:

notifications : [
  {
    type : {
      type : 'string',
      defaultsTo : 'general'
    },
    title : {
      type : 'string',
      required : true
    },
    link : {
      type : 'string'
    },
    date : {
      type : 'datetime',
      defaultsTo: new Date().toISOString()
    }
  }
]

我被迫将我的通知属性更改为:

notifications : {
  type : 'array'
}

并手动检查并验证所有内容:(