ich viele Dinge über Assoziationen, aber nichts zu meinem speziellen Fall gefunden,
i erstellt einige Modelle und ich versuche, sie zu assoziieren,
so denke ich, es eine Frage des Verstehens Datenbankmodellierung auch.Sequelize cli Schaffung Verein belongsto Benutzer oder Mitarbeiter
Ich habe die Modelle Benutzer und Mitarbeiter, beide teilen ein Attribut user_id.
user.js
'use strict';
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
user_id: DataTypes.STRING,
fullname: DataTypes.STRING,
username: DataTypes.STRING,
comment: DataTypes.TEXT
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
User.hasMany(models.Sshkey, {foreignKey: 'sshkey_id'})
}
}
});
return User;
};
staff.js
'use strict';
module.exports = function(sequelize, DataTypes) {
var Staff = sequelize.define('Staff', {
user_id: DataTypes.STRING,
fullname: DataTypes.STRING,
username: DataTypes.STRING,
password: DataTypes.STRING,
isAdmin: DataTypes.BOOLEAN
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
Staff.hasMany(models.Sshkey, {foreignKey: 'sshkey_id'})
}
}
});
return Staff;
};
und ich habe ein Modell sshkey bekam, die entweder zu einem Benutzer oder einem Mitarbeiter gehören.
Ich benutze Sequelize cli und habe noch keine Migrationen durchgeführt.
Und ich bin ziemlich neu in Js und Erstellen von Datenbanken, über die Datenbankmodelle und die Verbände zu denken, und ich bin Kuriosität, wenn ich oder so etwas wie tun schreiben kann:
'use strict';
module.exports = function(sequelize, DataTypes) {
var Sshkey = sequelize.define('Sshkey', {
sshkey_id: DataTypes.STRING,
sshkey: DataTypes.TEXT
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
// My Problem starts here |
// Should i write |
// |
// V
Sshkey.hasOne(models.User || models.Staff, {foreignKey: 'user_id'})
// Or maybe:
// Sshkey.hasOne(models.User, {foreignKey: 'user_id'}) ||
// Sshkey.hasOne(models.Staff, {foreignKey: 'user_id'})
// Should i rather rename models.Staffs foreignKey user_id to staff_id?
// Or maybe:
// Sshkey.hasOne(models.User, {as: 'userkey', foreignKey: 'user_id'})
// Sshkey.hasOne(models.Staff, {as: 'staffkey', foreignKey: 'user_id'})
}
}
});
return Sshkey;
};
Was ein richtig wäre, Lösung für das Problem, wenn ich später einen sshkey entweder an einen Benutzer oder an einen Mitarbeiter referenzieren möchte?
Zwei Modelle mit Staffkeys und Userkeys erstellen?
Vielen Dank im Voraus,
bigz
Gibt es eine Möglichkeit i-Modelle erstellen können sequelize aus und mit Command Eigenschaften hinzufügen wie 'primaryKey: true',' allowNull: false' und 'onDelete:‚cascade'' zu das Feld Benutzer-ID? Oder kann/sollte ich nur das erstellte Modell bearbeiten, wenn ich es brauche? Ich habe gerade './sequelize verwendet: create --name User --attributes user_id: string, fullname: string, benutzername: string, kommentar: text' , um das Modell zu erstellen. – BigZ
Ich gehe davon aus, dass es einen Weg gibt, aber ich habe nicht wirklich Sequelize CLI zuvor verwendet. – jjbskir