sequelize table sans colonne 'id'
j'ai le texte suivant sequelize définition d'une table:
AcademyModule = sequelize.define('academy_module', {
academy_id: DataTypes.INTEGER,
module_id: DataTypes.INTEGER,
module_module_type_id: DataTypes.INTEGER,
sort_number: DataTypes.INTEGER,
requirements_id: DataTypes.INTEGER
}, {
freezeTableName: true});
Comme vous pouvez le voir il n'y a pas un id
colonne de ce tableau. Cependant lorsque j'essaie d'insérer, il tente encore le sql suivant:
INSERT INTO `academy_module` (`id`,`academy_id`,`module_id`,`sort_number`) VALUES (DEFAULT,'3',5,1);
Comment puis-je désactiver l' id
fonction, il a clairement?
Vous devez vous connecter pour publier un commentaire.
Si vous ne définissez pas un
primaryKey
puis sequelize utiliseid
par défaut.Si vous souhaitez définir votre propre, il suffit d'utiliser
primaryKey: true
sur votre colonne.primaryKey: true
pour les colonnes que vous souhaitez utiliser en tant que clé primaire.id
fonction, il a clairement?" et cette réponse tente d'y répondre avec des "Si vous le souhaitez, vous pouvez modifier le nom de la clé primaire". Quoi??id
(vous pouvez définir plusieurs champs commeprimaryKey: true
) et si vous avez tout simplement pas de l'identifiant (id) de votre table, sequelize legazy la documentation dit que vous pouvez simplement le supprimer avecModel.removeAttribute('id');
et vous aurez un tableau (modèle) sans clé primaire.Si vous souhaitez désactiver complètement la clé primaire de la table, vous pouvez utiliser
Model.removeAttribute
. Être averti que cela pourrait causer des problèmes à l'avenir, comme Sequelize est un ORM et rejoint aurez besoin de configuration supplémentaire.Pour une clé primaire composite, vous devez ajouter "primaryKey: true" pour toutes les colonnes de la partie de la clé primaire. Sequelize considère que de telles colonnes de faire partie d'une clé primaire composite.
Si votre modèle ne dispose pas d'une colonne d'ID, vous pouvez utiliser le Modèle.removeAttribute ("id"); pour se débarrasser de lui.
Voir http://docs.sequelizejs.com/en/latest/docs/legacy/
Donc dans votre cas il serait
Remarque:
Vous semblez être de faire une table de jointure. Envisager de faire
academy_id
etmodule_id
des clés primaires. De cette façon, le même lien ne sera pas en mesure d'apparaître plusieurs fois, et la base de données ne va pas créer un caché colonne id en vain.