Articles of sequelize.js

在Sequelize.js中调用存储过程

我search了文档,并试图谷歌,但我没有find一个直接的答案的问题: 如何在Sequelize中调用存储过程? 我已经search了Sequelize的文档,但我甚至没有find“程序”一词的踪迹。 我得到的最接近的是这个bug-report-turned-feature-request: https : //github.com/sequelize/sequelize/issues/959 从链接引用: 我想象的会很棒: sequelize.query('CALL calculateFees();').success( function (settingName1, settingName2, settingName3, users) { }); 他们提到可以调用存储过程,但是没有提供语法。 任何人都可以给我一个正确的语法的例子吗? 谢谢。

使用NodeJS进行续集不能连接有限制的表

我试图实现一个简单的查询,应该看起来像这样: select * from property join entity_area on property.id=entity_area.entity_id and entity_area.area_id=1 where property.price>300000 limit 12 非常简单:我想获得join的结果,然后限制到12。 在Sequelize中,我使用以下函数: return models.property.findAll( { where: ["price>=?", 300000], include: [ { model:models.entity_area, where: { area_id:1 } } ], limit:12 }) 但是这个代码生成以下sql: select property.*, entity_area.* from (select * from property where property.price>300000 limit 12) join entity_area on property.id=entity_area.entity_id and entity_area.area_id=1 这与我想要做的完全不同的逻辑,因为在生成的SQL它首先获得任何12个结果,然后尝试joinentity_area,当然随机12结果不一定匹配entity_area,所以我'没有结果回来。 […]

Sequelize – findOne()。success()是未定义的

我正在关注passport.js文档以创build一个使用Sequelize作为ORM的LocalStrategy作为我的postgres数据库。 然而,在authentication过程中,做User.findOne(…).success(function(user){…]}); 在我的login.js模块返回undefined 。 我究竟做错了什么? user.js的: var pg = require('pg'); var Sequelize = require('sequelize'); var sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', port: 5432, dialect: 'postgres' }); var User = sequelize.define('users', { username: Sequelize.STRING, password: Sequelize.STRING }); User.sync(); module.exports = User; 我的login.js(路由器) var express = require('express'); var router = express.Router(); var passport = […]

Postgres方言不工作在续集-m

运行Sequelize -m 在我的config.json "development": { "username": "root", "password": null, "database": "**********", "dialect": "postgres", "protocol": "postgres", "port": 5432, "host": "127.0.0.1" }, 出错: sequelize -m Loaded configuration file "config/config.json". Using environment "development". /usr/local/lib/node_modules/sequelize/lib/transaction-manager.js:10 throw new Error("The dialect " + sequelize.getDialect() + " is not support ^ Error: The dialect postgres is not supported. at new module.exports (/usr/local/lib/node_modules/sequelize/lib/transaction-manager.js:10:11) […]

以错误的顺序重新排列表格

我在我的nodejs应用程序中使用sequelize ORM,它似乎是在我sequelize.sync({force: true})以错误的顺序丢弃表 例如,用: var StationEntity = sequelize.define('Station', { id: { type: Sequelize.INTEGER, primaryKey: true, allowNull: false}, name: { type: Sequelize.STRING, allowNull: false} }) var StationSnapshotEntity = sequelize.define('StationSnapshot', { id: { type: Sequelize.BIGINT, autoIncrement: true, primaryKey: true}, snapshotTimestamp: { type: Sequelize.BIGINT, allowNull: false} }) StationEntity.hasMany(StationSnapshotEntity, {as: 'Snapshots', foreignKeyConstraint: true, allowNull: false}) 我在sequelize.sync({force: true})之后得到以下日志: Executing: DROP […]

在find(1.6)上获取关联

sequelize 1.6在更新日志中有以下内容: [FEATURE]为find和findAll添加了关联预取 问题是如何? 我定义了以下模型: var self = { Medium: client.define("Medium", { name: Sequelize.STRING, description: Sequelize.TEXT }, User: client.define("User", { firstName: Sequelize.STRING, lastName: Sequelize.STRING, email: Sequelize.STRING, aboutArt: Sequelize.TEXT, bio: Sequelize.TEXT, password: Sequelize.STRING, description: Sequelize.TEXT } }; self.User.hasMany(self.Medium, { as: 'Media' }); self.Medium.hasMany(self.User); for(var key in self){ var model = self[key]; model.sync(); } 后来当我拿这样的用户: User.find(id) .success(function(record) […]

什么在Sequelize“configuration文件”?

我刚开始使用Node.js中的Sequelize,发现文档真的很缺乏。 我有一个“数据库”模块,我通过Sequelize连接到数据库,并从configuration文件中读取./config.json相对于我的项目根目录的configuration文件。 这是一个嵌套的configuration,不太可能像Sequelize希望CLI的configuration文件那样构造。 现在我正在尝试使用迁移和文档引用“configuration文件”。 我知道我可以设置该configuration文件的path,但是我把它放在哪里? 它没有logging在任何地方(我见过)。

如何通过NodeJS Sequelize中的查询来统计组

在Rails中,我可以执行一个简单的ORM查询模型的喜欢数量: @records = Model .select( 'model.*' ) .select( 'count(likes.*) as likes_count' ) .joins( 'LEFT JOIN likes ON model.id = likes.model_id' ) .group( 'model.id' ) 这会生成查询: SELECT models.*, count(likes.*) as likes_count FROM "models" JOIN likes ON models.id = likes.model_id GROUP BY models.id 在Node Sequelize中,任何类似的尝试都会失败: return Model.findAll({ group: [ '"Model".id' ], attributes: ['id', [Sequelize.fn('count', Sequelize.col('"Likes".id')), 'likes_count']], include: […]

是否有可能通过关联表中的属性过滤查询与sequ​​elize?

我想通过连接表的属性过滤我的查询 我有2个城市和类别,我通过第三个表CityCategory联系。 这个想法是当CityCategory得到与城市相关的类别。 year是一个特定的整数。 这是我如何指定的协会: module.exports = function(sequelize, DataTypes) { var CityCategory = sequelize.define('CityCategory', { year: { type: DataTypes.INTEGER, allowNull: false, validate: { notNull: true } } }, { indexes: [{ unique: true, fields: ['CityId', 'CategoryId', 'year'] }] }); return CityCategory; }; City.belongsToMany(models.Category, { through: { model: models.CityCategory } }); Category.belongsToMany(models.City, { through: { model: […]

在sequelize中检查mysql连接

我有一个非常简单的程序,我创build一个Sequelize实例,然后我执行一个MySQL数据库的原始查询。 这种情况是,当MySql启动并运行没有问题,我可以执行查询没有问题。 但是,当MySql没有运行,那么查询不会发出任何错误,直到查询超时已经达到,然后它发出一个ETIMEOUT错误。 但那不是真的发生了什么事情。 我希望查询发出ENOTFOUND错误或类似的东西,如果mysql不运行,所以我可以pipe理错误,并执行不同的操作,如果Mysql已经closures或Mysql非常繁忙,并有一个非常大的响应时间。 我要做些什么来检查Mysql是否启动并运行,而不必等待超时exception。 sequelize = new Sequelize(db_name, db_user, db_pass, opts); sequelize.query('SELECT * FROM some_table').success(function(result) { console.log(result); }).error(function(err) { console.log(err); });