sequelize更新已经存在的,保存不存在的

比如说如果存在小明这个人了我就只更改age,如果不存在小明这个人我就从新创建这个人,有没有比较简单的写法

User.create({ // 保存每天的请求记录
    user_id: id,
    name: "小明",
    age:5
});

阅读 7.8k
2 个回答

解决

User.findOrCreate({
      where: {name: '小明'}, 
      defaults: {age: 5}
    })
    .spread((user, created) => {
      if(created === false) {
        user.update({......})
      }
    })

分析

  1. 查找小明
  2. 如果没有

    1. 根据defaults创建数据
    2. 返回创建后的数据user 为刚创建的对象
    3. 返回是否创建created 为true
    4. 通过spread拆分返回的数组
  3. 如果已存在

    1. 返回已存在的数据
    2. user是已存在数据
    3. created为false
    4. 更新user即可

建议

比较常用的框架,插件,最好还是通读一下文档

参考

http://docs.sequelizejs.com/m...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题