I have two models (Individual, Email) and I'm trying to insert Individual_Email into the created table using Sequelize commands. Although Sequelize creates the desired table, it returns the following error when trying to add / receive / install to / from this table: "Object [object Promise] does not have an" addEmail "method." What am I missing?
The Sequelize documentation says the models are User and Project, "This will add the getUsers, setUsers, addUsers methods to Project and getProjects, setProjects and addProject for the user."
It makes me believe (looking at promises) that I probably don't understand how to use Node's asynchronous functions. I tried both synchronous and asynchronous version of the insert, returning the same message above.
Pin documentation: http://docs.sequelizejs.com/en/latest/docs/associations/
the code:
routes /index.js
var express = require('express'); var router = express.Router(); var models = require('../models'); router.get('/', function(req, res, next) { 'use strict'; var tIndividual, tEmail; tIndividual = models.Individual.create({ name: "Test" }); tEmail = models.Email.create({ address: " test@gmail.com " }); console.log(tEmail); res.render('index', { title: 'Express' }); }); module.exports = router;
OR
router.get('/', function(req, res, next) { 'use strict'; var tIndividual, tEmail; tIndividual = models.Individual.create({ name: "Test" }).then(function(){ tEmail = models.Email.create({ address: " test@gmail.com " }).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' });
How can I add the "Individual_Email" table in the best way? I assume that I need to do this synchronously in order to wait for the update, but I am open to any suggestions. Thanks!