Articles of sequelize.js

Postgres和Sequelize – 无法读取未定义的属性“名称”

我正在尝试在一个正在MySQL上运行良好的项目更改数据库到Postgres。 运行迁移时(收到sync和sequelize db:migrate),我收到以下错误消息。 /myProject/node_modules/pg/lib/connection.js:109 self.emit(msg.name, msg); ^ TypeError: Cannot read property 'name' of undefined at Socket.<anonymous> (/myProject/node_modules/pg/lib/connection.js:109:20) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:172:18) at Socket.Readable.push (_stream_readable.js:130:10) at TCP.onread (net.js:542:20) 我只隔离了这个简单的模型,但是我仍然得到错误 module.exports = (sequelize, DataTypes) => { var User = sequelize.define('User', { email: { type: DataTypes.STRING, validate: { isEmail: true } }, googleId: […]

在任何查询查询上崩溃

我有一个全新的Node应用程序使用sequelize,但它不会让我运行一个单一的查询。 我试图find任何东西,它只是不工作: var models = require('./models'); models.User.findById(1, { logging: console.log }) 每查询查询结束显示完全相同的错误。 数据库已被迁移并播种。 我通过打开它来validation,并有一堆用户。 这是我的模型: // user.js 'use strict'; module.exports = function(sequelize, DataTypes) { var User = sequelize.define('User', { email: DataTypes.STRING, name: DataTypes.STRING }, { classMethods: { associate: function(models) { // associations can be defined here User.belongsToMany(models.Group, {through: 'Membership'}) } } }); return User; }; […]

仅在主表上聚合GROUP BY,而不是在连接中完整连接的表

我有五个表USER_ATTRIB , QUESTION_MAIN , REPLY_MAIN , CATEGORY_MAIN , QSTN_CATG相关如下: m.QUESTION_MAIN.belongsTo(m.USER_ATTRIB, { foreignKey: 'POSTER_I', targetKey: 'USER_I'}); m.QUESTION_MAIN.hasMany(m.REPLY_MAIN, { foreignKey: 'QSTN_I' }); m.QUESTION_MAIN.belongsToMany(m.CATEGORY_MAIN, { through: m.QSTN_CATG, foreignKey: 'QSTN_I' }); m.QUESTION_MAIN.hasMany(m.QSTN_CATG, { foreignKey: 'QSTN_I' }); 我想在QUESTION_MAIN上运行查询来获取有关问题的详细信息。 其中一个细节是对问题的答复数量,可以通过查询 SELECT COUNT(REPLY_MAINs.QSTN_I) GROUP BY QSTN_I; 我想要运行的组合查询是: SELECT `QUESTION_MAIN`.* ,`USER_ATTRIB`.`USERATTRIB_ID` AS `USER_ATTRIB.USERATTRIB_ID` ,`USER_ATTRIB`.`USER_NAME` AS `USER_ATTRIB.USER_NAME` ,`QSTN_CATGs`.`QSTN_CATG_ID` AS `QSTN_CATGs.QSTN_CATG_ID`, ,`QSTN_CATGs`.`CATG_I` AS `QSTN_CATGs.QSTN_CATG_I` ,`REPLY_MAINs`.`REPLY_ID` […]

在Sails应用程序中使用Sequelize作为ORM使用原始查询

我正在使用Sequelize作为ORM工具的sails应用程序。 应用程序和Sequelize之间的初始集成是通过sails-hook-sequelize插件来实现的。 这个方法迄今为止工作得很好,定义和使用模型没有问题。 然而,当我想将一个View定义为一个Sequelize对象时,我遇到了一个障碍。 Sequelize没有(但)有一个简单的方法来做到这一点。 我发现的工作是执行一个原始查询,并用结果填充一个表。 现在我来到第二个路障和实际问题本身。 我如何简单地执行一个sequelize.query内我的帆应用程序? 在独立的节点应用程序使用sequelize我没有问题。 然而,这个风帆应用程序已经离我远去,我不知道什么对象实际上调用。查询! 我在找什么简单的东西 Sequelize.query("SELECT * FROM `Document.MyView`", { type: Sequelize.QueryTypes.SELECT}) 可悲的是,以上给我sequelize.query is not a function 我有一个connections.coffee文件,其中定义了数据库连接。 它被命名为“核心”,但是当我尝试Core.query我得到Core is undefined 似乎我错过了将太多东西堆叠在一起的简单而基本的东西。

快递会保持多久?

我有一个基于节点的项目如下: "express": "~4.13.1", "express-sequelize-session": "^0.4.0", "express-session": "^1.12.1" 由于我对db行数量有严格的限制,可能主要关心的是:会话存储在db中的时间有多长,有没有办法修改这些限制?

创build一个logging和一个关联的logging

问题: 想象一下,我有两个相关的模型, Library 有很多 Book : var Library = sequelize.define('Library', { title: Sequelize.STRING, description: Sequelize.TEXT, address: Sequelize.STRING }); var Book = sequelize.define('Book', { title: Sequelize.STRING, description: Sequelize.TEXT, publish_date: Sequelize.DATE }); Library.hasMany(Book); 现在,为了创build一个Library和一个相关的Book ,我做: Library.create({ name: 'Roan Library', address: '123 Any St' }).then(function (library) { Book.create({ title: 'Reading with Time', description: 'A fun jaunt in reading', […]

我应该在哪里存储我的数据模型?

我使用sqlight在节点模块中创build数据模型: database.js: var Sequelize = require('sequelize'), settings = require('./settings.js').settings, sequelize = new Sequelize(settings.database), //Datamodel User = sequelize.define('user', { authID: Sequelize.STRING, name: Sequelize.STRING, }), UserAttribute = sequelize.define('userAttributes', { name: Sequelize.STRING, value: Sequelize.STRING, }), Hail = sequelize.define('hail', { lat: Sequelize.INTEGER, lon: Sequelize.INTEGER, }); UserAttribute.belongsTo(User); Hail.belongsTo(User, {as: 'driver'}); Hail.belongsTo(User, {as: 'rider'}); sequelize.sync(settings.sync).then(function() { return User.create({}); }).then(function(driver) { console.log(driver.get({ […]

分享sequalize模型的最佳方法

我有一套sequalize模型,我在我的服务器上使用,但也希望在lambda部署上共享相同的。 它可能会在不同的回购。 在两者之间共享最简单的方法来制作一个只包含模型的npm包?

我怎样才能使用sequalize添加规范化的logging?

我想创build一个方法User.createRider() ,将规范化的数据添加到UserAttribute列。 var sequelize = require('../database.js').sequelize, Sequelize = require('../database.js').Sequelize, UserAttribute = sequelize.define('userAttributes', { key: Sequelize.STRING, value: Sequelize.STRING, }), User; UserAttribute.belongsTo(User); User = sequelize.define('user', {},{ classMethods: { createRider: function(params) { newUser = User.create(); //this should be related to the user. UserAttribute.create({key: 'somekey', value: 'somevalue'}); return newUser; } } }); module.exports = User; 我的问题是,我不能创buildUserAttribute模型在用户完成之前,因为我需要用户模型关联userAttributes和我不能创buildusermodel第一,因为我不能创build类方法在定义userAttribute之前。 这似乎是一个常见的情况。 这怎么能解决。

如何使用Sequelize在JSONB字段上创buildUNIQUE约束

我在NodeJS中使用Sequelize ORM来pipe理postgreSQL数据库。 我在我的表中使用JSONB数据types,我需要JSONB字段上的索引和此JSON属性上的唯一约束。 如果我必须在这里做一个经典的SQL我的脚本: CREATE TABLE tableJson (id SERIAL PRIMARY KEY, content JSONB NOT NULL); CREATE INDEX j_idx ON tableJson USING gin(content jsonb_path_ops); CREATE UNIQUE INDEX content_name_idx ON tableJson(((content->>'name')::varchar)); 我发现如何使用INDEX创build表,但不知道如何处理UNIQUE约束。 以下是我的脚本示例: var tableJson = sequelize.define('tableJson', { content: Sequelize.JSONB }, { indexes: [{ fields: ['content'], using: 'gin', operator: 'jsonb_path_ops' } }); 有没有解决我的问题? 如果没有,我可能会使用sequelize.query方法来执行原始查询,但这不是非常演变。 任何帮助,将不胜感激!