Sequelize - Impossible de lire la propriété "définir" undefined
J'essaie d'insérer un enregistrement dans une table MYSQL à l'aide de sequelize.
Installé sequelize et mysql.
npm install --save sequelize
npm install --save mysql
défini dans app.js
var Sequelize = require('sequelize');
db.js
var Sequelize = require('sequelize');
var sequelize = new Sequelize('randomdb', 'root', 'root', {
host: 'localhost',
dialect: 'mysql',
port : 8889,
pool: {
max: 5,
min: 0,
idle: 10000
}
});
exports.sequelize = sequelize;
module.exports = Sequelize;
routes/index.js
var express = require('express');
var router = express.Router();
var sequelize = require('../db').sequelize;
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index', {title: 'Express'});
});
router.get('/adduser', function (req, res) {
var User = sequelize.define('users', {
first_name: Sequelize.STRING
});
sequelize.sync().then(function () {
return User.create({
first_name: 'janedoe'
});
}).then(function (jane) {
console.log(jane.get({
plain: true
}))
});
});
module.exports = router;
Voici l'erreur.
Impossible de lire la propriété "définir" undefined
TypeError: Cannot read property 'définir' undefined
Ce qu'il manque?
EDIT 2
db.js
var Sequelize = require('sequelize');
var sequelize = new Sequelize('randomdb', 'root', 'root', {
host: 'localhost',
dialect: 'mysql',
port: 8889,
pool: {
max: 5,
min: 0,
idle: 10000
},
define: {
timestamps: false
}
});
var db = {};
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
models/user.js
var db = require('../db'),
sequelize = db.sequelize,
Sequelize = db.Sequelize;
var User = sequelize.define('random', {
first_name: Sequelize.STRING
});
module.exports = User;
routes/index.js
var express = require('express');
var router = express.Router();
var db = require('../db'),
sequelize = db.sequelize,
Sequelize = db.Sequelize;
var User = require('../models/user');
router.get('/adduseryes', function (req, res) {
sequelize.sync().then(function () {
return User.create({
first_name: 'janedoe'
});
}).then(function (jane) {
res.send("YES");
});
});
module.exports = router;
Essayez de modifier pour les petits:
first_name: Sequelize.STRING
à first_name: sequelize.STRING
OriginalL'auteur salep | 2015-10-12
Vous devez vous connecter pour publier un commentaire.
Dans votre db.js fichier, vous l'écrasez le
exports
variable avec la Sequelize var. Dans node.js,module.exports
==exports
. Essayez plutôt ceci:Ensuite, vous pouvez modifier votre importation dans le routes/index.js comme suit:
user.js
, j'ai mismodule.exports = User;
, puis utilisé dansindex.js
commevar User = require('../models/user');
Est monUser
variable dans leindex.js
semble pour l'autre? Est-ce qu'il fonctionne?Je ne comprends pas complètement à votre question, mais si vous êtes confus au sujet de ce que chaque variable est, vous pouvez toujours juste de les imprimer avec
console.log
. Aussi, vous pourriez vouloir examiner votre nouveau code, parce que le rappel de la création de l'utilisateur pourrait ne pas être appelé correctement.Bien, nous allons le mettre de cette façon. Nous "jeter" dans la db db.js à l'aide du module.les exportations et les "attraper" dans le routes/index.js comme db en cas de besoin, est ce que le droit? J'espère que c'est clair maintenant 🙂 Merci encore.
Le nommage des variables est arbitraire et vous pouvez nommer que lorsque vous importez avec
require
. On pourrait direvar abcd = require('../db'),
sequelize = abcd.sequelize,
Sequelize = abcd.Sequelize
.j'ai fait face à la même question, probablement il y a peut être la faute de frappe d'erreur. exemple d'Utilisateurs.créer({foo: 1}). vérifiez les utilisateurs est correct.
OriginalL'auteur Evan Siroky