Node.js / Sequelize.js / Express.js - Wie legen Sie in viele-zu-viele-Assoziation? (sync/async?)

Ich habe zwei Modelle (Einzel -, E-Mail) und versuche zum einfügen in die erstellten 'Individual_Email' Tabelle mit den Sequelize Befehle. Während Sequelize ist, das die gewünschte Tabelle, gibt es den folgenden Fehler beim hinzufügen/get - /set-an/aus dieser Tabelle: "Objekt [Objekt-Versprechen] hat keine Methode 'addEmail'". Was bin ich?

Den Sequelize Dokumentation sagt, wenn die Modelle sind User und Projekt, "Das wird hinzufügen von Methoden getUsers, setUsers, addUsers zu Projekt, und getProjects, setProjects und addProject zu User".

Dies führt mich zu glauben, (auf der Suche bei Versprechen), dass ich wahrscheinlich bin Missverständnis, wie die Verwendung der asynchronen Funktionen der Knoten. Ich habe versucht, sowohl eine synchrone und asynchrone version der Aufnahme, sowohl Rücksendung die gleiche Meldung oben.

Sequelize Dokumentation: http://docs.sequelizejs.com/en/latest/docs/associations/

Code:

routes/index.js

var express = require('express');
var router = express.Router();
var models  = require('../models');

/* GET home page. */
router.get('/', function(req, res, next) {
    'use strict';

    var tIndividual, tEmail;
    tIndividual = models.Individual.create({
        name: "Test"
    });
    tEmail = models.Email.create({
        address: "[email protected]"
    });
    console.log(tEmail);

    res.render('index', { title: 'Express' });
});

module.exports = router;

ODER

/* GET home page. */
router.get('/', function(req, res, next) {
    'use strict';

    var tIndividual, tEmail;    
    tIndividual = models.Individual.create({
        name: "Test"
    }).then(function(){
        tEmail = models.Email.create({
            address: "[email protected]"
        }).then(function(){
            tIndividual.addEmail(tEmail).then(function(){
                console.log("Success");
            });
        })
    });

    res.render('index', { title: 'Express' });
});

module.exports = router;

models/index.js

db.Individual.hasMany(db.Email, {
    as: 'Email',
    through: 'Individual_Email'
});
db.Email.hasMany(db.Individual, {
    as: 'Individual',
    through: 'Individual_Email'
});

Wie kann ich hinzufügen, um die Tabelle 'Individual_Email' in der beste Weg? Ich gehe davon aus, dass ich brauchen, um es synchron zu warten, für das update, aber ich bin offen für alle Vorschläge. Danke!

InformationsquelleAutor smileham | 2015-03-07
Schreibe einen Kommentar