2016-11-18 2 views
2

Ich habe die Dokumentation von Sequelize ziemlich stark verfolgt und ich habe ein Problem, wenn ich zu den Beziehungen geriet. Hier ist mein sehr einfacher Code der Schaffung von zwei sehr einfach 1: 1 Beziehungen mit belongsToX ist nicht mit Y verbunden

import Sequelize, { STRING, INTEGER, TEXT } from 'sequelize'; 

const sequelize = new Sequelize('dbname', '', ''); 

const User = sequelize.define('user', { 
    name: STRING, 
    age: INTEGER 
}); 

const Item = sequelize.define('item', { 
    name: STRING, 
    price: INTEGER 
}); 

Item.belongsTo(User); 

sequelize.sync({ force: true }).then(() => { 
    User.create({ 
     name: 'Hobbyist', 
     age: 22, 
     Item: { 
      name: 'Phone', 
      price: 199 
     } 
    }, { 
     include: [ Item ] 
    }); 
}); 

Fehlern, die ich bekomme:

Unhandled rejection Error: item is not associated to user! 

Antwort

5

Sequelize arbeitet mit gegenseitigen Beziehungen.

Also, wenn Sie Items belong to User haben möchten, möchten Sie wahrscheinlich auch User has one Item haben.

In Ihrem Fall haben Sie Benutzer mit Artikel verknüpft, aber nicht Artikel mit Benutzer. So machen sie es durch Zugabe von:

Item.belongsTo(User); 
User.hasOne(Item); // this line 

Jetzt Sequelize weiß, dass jeder Benutzer einen Artikel hat, die uns die Möglichkeit geben kann, JOIN Abfragen zu machen.

Die Art und Weise, wie die Bibliothek die Eigenschaften der Zuordnungen behandelt, ist durch den Tabellenname. Also in Ihrem Fall müssen Sie auch Item zu item umbenennen, wie folgt aus:

User.create({ 
    name: 'Hobbyist', 
    age: 22, 
    item: { 
//^item, not Items 
     name: 'Phone', 
     price: 199 
    } 
}, { 
    include: [ Item ] 
}); 
+0

Danke, ich war nicht bewusst, der ‚Artikel -> Artikel“ Ding, und begann alias zu missbrauchen Sequelize immer. tolle. – Hobbyist

Verwandte Themen