Ich habe zwei "Modelle" in meiner Anwendung, die in verschiedene Dateien verzweigt sind:belongsTo assoziieren mit scheint nicht zu funktionieren
ApplicationSession.model.js
module.exports = function(sequelize, DataTypes) {
const { INTEGER, DATE } = DataTypes;
var ApplicationSession = sequelize.define("applicationSession", {
sessionStart: DATE,
sessionEnd: DATE
}, {
associate: (models) => {
ApplicationSession.belongsTo(models.User, {
foreignKey: 'userId',
as: 'User',
});
}
});
return ApplicationSession;
};
User.model.js
module.exports = function(sequelize, DataTypes) {
const { STRING, INTEGER, DATE } = DataTypes;
var User = sequelize.define("user", {
name: STRING
}, {
associate: (models) => {
User.hasMany(models.ApplicationSession);
}
});
return User;
};
Wenn die Tabellen speichern (droping/Recreating) force: true
und manuellen Abwurf nur für geistige Gesundheit, gibt es nie ein Feld für den Benutzer erstellt.
Hier ist, wie ich meine verschiedenen Modellen bin Laden
import fs from 'fs';
import path from 'path';
import sequelize from '../connection';
var exports = {};
fs.readdirSync(__dirname).forEach(fileName => {
if(~fileName.indexOf('.model.js')) {
const subname = fileName.replace('.model.js', '');
const model = sequelize.import(path.join(__dirname, fileName));
exports[subname] = model;
}
});
export default exports;
Wenn alle Modelle in einer einzigen Datei deklariert sind, ich X.belongsTo(Y)
ohne Probleme nutzen können, so dass ich dachte, ich würde versuchen, diese zu die Unterseite meines sequelize.import
nennt
exports['ApplicationSession'].belongsTo(exports['User'], { as: 'User', foreignKey: 'userId' });
exports['User'].hasMany(exports['ApplicationSession']);
jedoch, dass ein anderer Fehler generiert:
/node_modules/sequelize/lib/associations/mixin.js:96
throw new Error(this.name + '.' + Utils.lowercaseFirst(Type.toString()) + ' called with something that\'s not an instance of Sequelize.Model');
^
Error: applicationSession.function BelongsTo(source, target, options)
Was kann ich tun, damit Beziehungen funktionieren?
Dies war ein Fehler in meiner Frage, sie sind so benannt, sorry. Bearbeiten: Die Frage – Hobbyist
mein Anawer aktualisiert – drinchev