Ho due modelli (Individuale, Email) e sto provando ad inserirmi nella tabella "Individual_Email" creata usando i comandi Sequelize. Mentre Sequelize sta creando la tabella desiderata, restituisce il seguente errore quando si tenta di aggiungere/ottenere/impostare su/da quella tabella: "Oggetto [oggetto Promise] non ha alcun metodo 'addEmail'". Cosa mi manca?Node.js/Sequelize.js/Express.js - Come inserire nell'associazione many-to-many? (sync/async?)
La documentazione Sequelize indica se i modelli sono Utente e Progetto, "Ciò aggiungerà metodi getUsers, setUsers, addUsers a Project e getProjects, setProjects e addProject all'utente."
Questo mi porta a credere (guardando le promesse) che probabilmente non capisco come usare le caratteristiche asincrone del Nodo. Ho provato sia una versione sincrona che asincrona dell'inserimento, restituendo entrambi lo stesso messaggio sopra.
Sequelize Documentazione: http://docs.sequelizejs.com/en/latest/docs/associations/
Codice:
percorsi/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;
O
/* 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;
modelli/index.js
db.Individual.hasMany(db.Email, {
as: 'Email',
through: 'Individual_Email'
});
db.Email.hasMany(db.Individual, {
as: 'Individual',
through: 'Individual_Email'
});
Come posso aggiungere alla tabella 'Individual_Email' nel migliore dei modi? Suppongo di dover fare in modo sincrono per attendere l'aggiornamento, ma sono aperto a qualsiasi suggerimento. Grazie!
Puoi aggiungere il tempo in cui l'email viene creata in un solo colpo? invece di creare prima quindi aggiungereEmail? –
@MortezaShahriariNia Si noti che questa associazione è N: M, poiché sia l'individuo che l'e-mail sono stati configurati con 'hasMany'. Quindi alla fine ci sono tre tabelle (Email, Individuali e EmailIndividuale). Il codice sopra, in pratica, genererà tre istruzioni INSERT e non è possibile ottenere di meno perché ci sono tre tabelle da compilare. –
@MortezaShahriariNia Detto questo, una volta ho avuto una situazione simile che ho risolto in questa domanda: http://stackoverflow.com/questions/28751483/is-there-a-shortcut-in-sequelize-for-user-setgroups-when -i-have-all-the-Grou –