Ich habe einen NodeJS-Server mit Express. Für meine Datenbank verwende ich Sequelize, und ich definiert meine Modelle wie auf der Sequelize Dokumentation:NodeJS Sequelize - Kann Eigenschaft '_isSequelizeMethod' von undefined nicht lesen
models/index.js
"use strict";
var fs = require("fs");
var path = require("path");
var Sequelize = require("sequelize");
var sequelize = new Sequelize('mydb', 'root', '', {
host: 'localhost',
dialect: 'mysql',
pool: {
max: 5,
min: 0,
idle: 10000
}
});
var db = {};
fs
.readdirSync(__dirname)
.filter(function(file) {
return (file.indexOf(".") !== 0) && (file !== "index.js");
})
.forEach(function(file) {
var model = sequelize.import(path.join(__dirname, file));
db[model.name] = model;
});
Object.keys(db).forEach(function(modelName) {
if ("associate" in db[modelName]) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
models/server.js
"use strict";
module.exports = function(sequelize, DataTypes) {
var Server = sequelize.define('Server', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
unique: true,
allowNull: false
},
reference: DataTypes.STRING,
name: DataTypes.STRING
},
{
timestamps: false,
paranoid: false,
underscored: true,
freezeTableName: true,
tableName: 'server'
});
return Server;
};
models/Teilnehmer js
"use strict";
module.exports = function(sequelize, DataTypes) {
var Subscriber = sequelize.define('Subscriber', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
unique: true,
allowNull: false
},
type: {
type: DataTypes.ENUM,
values: ['email', 'phone']
},
contact: DataTypes.STRING,
server_id: DataTypes.INTEGER,
notified: DataTypes.INTEGER,
last_notified: DataTypes.DATE
},
{
timestamps: false,
paranoid: false,
underscored: true,
freezeTableName: true,
tableName: 'subscriber',
classMethods: {
associate: function(models) {
Subscriber.belongsTo(models.Server, { foreignKey: 'server_id', targetKey: 'id' });
}
}
});
return Subscriber;
};
Und hier meine Route:
var models = require('../models');
app.get('/subscribe/:type/:contact/:ref', function(req, res) {
var type = req.params.type;
var contact = req.params.contact;
var ref = req.params.ref;
models.Subscriber.findAll().then(function(result) {
console.log(result);
});
res.render('full/subscribed.twig', {
type: type,
contact: contact,
server : server
});
});
Und wenn ich meine Route Zugriff Ich habe diese Fehlermeldung:
Unhandled rejection TypeError: Cannot read property '_isSequelizeMethod' of undefined
at /Users/me/Projects/nodejs/myproject/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1077:20
at Array.map (native)
at Object.QueryGenerator.selectQuery (/Users/me/Projects/nodejs/myproject/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1067:55)
at QueryInterface.select (/Users/me/Projects/nodejs/myproject/node_modules/sequelize/lib/query-interface.js:669:25)
at null.<anonymous> (/Users/me/Projects/nodejs/myproject/node_modules/sequelize/lib/model.js:1398:32)
at tryCatcher (/Users/me/Projects/nodejs/myproject/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/me/Projects/nodejs/myproject/node_modules/bluebird/js/release/promise.js:510:31)
at Promise._settlePromise (/Users/me/Projects/nodejs/myproject/node_modules/bluebird/js/release/promise.js:567:18)
at Promise._settlePromise0 (/Users/me/Projects/nodejs/myproject/node_modules/bluebird/js/release/promise.js:612:10)
at Promise._settlePromises (/Users/me/Projects/nodejs/myproject/node_modules/bluebird/js/release/promise.js:691:18)
at Async._drainQueue (/Users/me/Projects/nodejs/myproject/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/Users/me/Projects/nodejs/myproject/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues [as _onImmediate] (/Users/me/Projects/nodejs/myproject/node_modules/bluebird/js/release/async.js:17:14)
at processImmediate [as _immediateCallback] (timers.js:383:17)
Ich habe versucht, einige Erfahrungen auf einer unabhängigen NodeJS Datei und alles gut funktionieren zu tun, ich starten nur meine eigenständige JS-Datei mit einigen Aktionen auf der Datenbank und alles ist in Ordnung. Wenn ich genau die gleichen Dinge auf meiner Express Route mache, habe ich diesen Fehler ...
Jemand hat eine Idee warum?
Vielen Dank im Voraus, Steve
Entschuldigungen konnte aber nicht verstehen, was Sie versuchen zu kommunizieren .. könnten Sie pls erarbeiten, wo ich Änderungen vornehmen müssen, um diesen Fehler zu entfernen. Ich stehe mit einem ähnlichen Problem mit genau gleichen Stack-Trace –
Hallo Amritpal, in meinem Code hatte ich etwas wie "Object.prototype.join = function() {};" Diese Zeile erzeugte meinen Fehler. Versuchen Sie, console.log node_modules/sequelize/lib/dialects/abstract/query-generator.js (Zeile 1067) die Variable "mainAttributes", werden Sie sehen. – ReaperSoon