SequelizeBaseError:列“…”不存在
遇到使用sequelize表的错误join“belongsTo”和“hasMany;
SequelizeBaseError:列videos.eventEventId不存在。
我没有在模型或数据库中的这列,并没有引用路由器中的任何地方 – 不知道为什么这个错误是返回时,我没有这个在我的模型或表?
似乎出现在对事件模型的主键的任何引用上。
const Sequelize = require('sequelize') // Heroku postgres db connection const sequelize = new Sequelize(process.env.DATABASE_URL, { dialect: 'postgres', protocol: 'postgres', define: { timestamps: false, }, dialectOptions: { ssl: true } }); // Connect all the models/tables in the database to a db object, //so everything is accessible via one object const db = {}; db.Sequelize = Sequelize; db.sequelize = sequelize; //Models/tables db.venues = require('./models/venue.js')(sequelize, Sequelize); db.events = require('./models/event.js')(sequelize, Sequelize); db.videos = require('./models/video.js')(sequelize, Sequelize); //Relations db.events.hasMany(db.videos); db.videos.belongsTo(db.events); module.exports = db;
模型:事件
module.exports = (sequelize, DataTypes) => { const Event = sequelize.define('event', { id: { type: DataTypes.BIGINT, allowNull: false, autoIncrement: true, field: 'id', }, venueId: { type: DataTypes.INTEGER, allowNull: true, references: { model: 'venue', key: 'id' }, field: 'venue_id' }, eventId: { type: DataTypes.TEXT, primaryKey: true, allowNull: true, field: 'event_id' }, eventName: { type: DataTypes.TEXT, allowNull: true, field: 'event_name' }, startTime: { type: DataTypes.TIME, allowNull: true, field: 'start_time' }, place: { type: DataTypes.JSONB, allowNull: true, field: 'place' }, loc: { type: DataTypes.GEOMETRY, allowNull: true, field: 'loc' }, description: { type: DataTypes.TEXT, allowNull: true, field: 'description' }, intelIsMusicEvent: { type: DataTypes.BOOLEAN, allowNull: true, field: 'intel_is_music_event' }, intelHashTags: { type: 'ARRAY', allowNull: true, field: 'intel_hash_tags' }, instaLocTag: { type: DataTypes.TEXT, allowNull: true, field: 'insta_loc_tag' }, isEventOn: { type: DataTypes.BOOLEAN, allowNull: true, field: 'is_event_on' }, videoCount: { type: DataTypes.BIGINT, allowNull: true, field: 'video_count' } }, { tableName: 'event' }); return Event; };
video模型
module.exports = function(sequelize, DataTypes) { return sequelize.define('video', { eventId: { type: DataTypes.TEXT, allowNull: true, field: 'event_id', primaryKey: true, }, userName: { type: DataTypes.TEXT, allowNull: true, field: 'user_name' }, userPhotoLink: { type: DataTypes.TEXT, allowNull: true, field: 'user_photo_link' }, instaVideoLink: { type: DataTypes.TEXT, allowNull: true, field: 'insta_video_link' }, }, { tableName: 'insta_video' }); };
路由器
router.get('/venues/search', wrap(function*(req, res) { req.checkQuery('q', 'No keyword is specified').notEmpty().isAlpha() req.checkQuery('o', 'No keyword is specified').notEmpty().isInt() //o = offset of venue in db const result = yield req.getValidationResult() if (!result.isEmpty()) { res.status(400).json({ status: 'error', errorMessage: result.array() }) } try { const venues = yield db.events.findAll({ include: [ { model: db.videos, } ], raw: true, limit: 10, offset: `${req.query.o}`, order: [ [ 'video_count', 'DESC' ]], attributes: ['id', 'eventId', 'eventName', 'startTime', 'place', 'loc', 'description', 'instaLocTag', 'isEventOn', 'videoCount',], where: { 'place.location.city': { $ilike: `%${req.query.q}%` }, $or: { isEventOn:true } } }) res.json({status: 'success', payload: venues}) } catch (err) { console.log(err) console.trace(err) } }) ) module.exports = router
- 如何dockerize我的nodejs快递应用程序托pipe在亚马逊linux ami?
- ISODate使用Node.js,Express和MongoDB查找
- 获得刚刚添加的行的最佳方法。 Heroku + Node + Postgres
- 当加载socket.io.js时,Node.js“Uncaught SyntaxError:Unexpected token <”
- 为IE重复请求表示返回304
- 显示Express,Jade和Mongo错误的最佳方式
- 在mongo-db本机客户端的数据库连接
- 什么时候用node-sqlite3closures数据库并表示?
- 如何在WebStorm 10中通过Gulpfiledebugging由nodemon启动的快速应用程序?