在mysql中使用Unqiue键 - Sequelize

时间:2018-02-05 07:00:49

标签: javascript mysql composite-key unique-key

我的桌面型号名为' Contact' :

var Contact = sequelize.define('contact', {
  userKey: Sequelize.STRING,
  gsm: {
      type: Sequelize.STRING,
      unique: true,
      required: true
  },
  firstName: Sequelize.STRING,
  lastName: Sequelize.STRING,
)}

例如,如果用户登录并通过表单将数据作为输入发布:userKey,gsm,firstname,lastname就像这样 1234,mohamed,sameer,KKKK(userKey来自他的loginSession)

我用userKey将这些数据存储在mysql中 因此,如果用户再次添加相同的gsm,

它会发出警告,因为 gsm必须是唯一的

但我的问题是,如果具有不同userKey的用户进入应用程序并发布数据,他想添加由另一个用户添加的相同gsm。

PS:只有一个名为联系人

的表格

是否可以使用复合键或续作Hooks?

我的api.js:

exports.addNewContact = function (req, res) {
    var newcontact = {
        userKey: req.user.userKey, (// coming from login user session key)
        gsm: req.body.gsm,
        firstName: req.body.firstName,
        lastName: req.body.lastName,
    }
     Contact.create(newcontact).then(function (data){
        return res.status(200).send(data);
    }).catch(Sequelize.ValidationError, function (err) {
        return res.status(422).send(err.errors[0].message);
    }).catch(function (err) {
        return res.status(400).send(err.message);
    });

1 个答案:

答案 0 :(得分:0)

最后我得到了回答:

我改变模型看起来像这样:

var Contact = sequelize.define('contact', {
    userKey: Sequelize.STRING,
    role: Sequelize.STRING,
    gsm: {
        type: Sequelize.STRING,
        required: true
    },
    firstName: Sequelize.STRING,
    lastName: Sequelize.STRING
}, {
    indexes: [{
        unique: true,
        fields: ['userKey', 'gsm']
    }]
})

参考:https://stackoverflow.com/a/42199137/7862193