鍍金池/ 問答/數(shù)據(jù)庫/ sequelize更新已經(jīng)存在的,保存不存在的

sequelize更新已經(jīng)存在的,保存不存在的

比如說如果存在小明這個人了我就只更改age,如果不存在小明這個人我就從新創(chuàng)建這個人,有沒有比較簡單的寫法

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

回答
編輯回答
咕嚕嚕

解決

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

分析

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

    1. 根據(jù)defaults創(chuàng)建數(shù)據(jù)
    2. 返回創(chuàng)建后的數(shù)據(jù)user 為剛創(chuàng)建的對象
    3. 返回是否創(chuàng)建created 為true
    4. 通過spread拆分返回的數(shù)組
  3. 如果已存在

    1. 返回已存在的數(shù)據(jù)
    2. user是已存在數(shù)據(jù)
    3. created為false
    4. 更新user即可

建議

比較常用的框架,插件,最好還是通讀一下文檔

參考

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

2017年5月15日 11:34
編輯回答
擱淺

找到了一個中文文檔 https://github.com/demopark/s...

2017年2月26日 06:28