Articles of sequelize.js

用postgres默认为mysql

我正在设置Sequelize来pipe理Node.js应用程序中的postgres。 我需要sequelize-postgres,以及在实例化新的Sequelize对象时在方言attr中声明“postgres”。 但由于某种原因,它默认使用mysql。 确切的错误信息: /Users/…project/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:306 var connection = mysql.createConnection(connectionConfig); ^ TypeError: Cannot call method 'createConnection' of undefined at module.exports.connect (…/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:306:28) at Object.pool.Pooling.Pool.create (…/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:131:19) at createResource (…/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:258:13) at dispense (…/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:250:9) at Object.me.acquire (…/node_modules/sequelize/node_modules/generic-pool/lib/generic-pool.js:316:5) at null.fct (…/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:241:19) at null.<anonymous> (…/node_modules/sequelize/lib/emitters/custom-event-emitter.js:24:18) at processImmediate [as _immediateCallback] (timers.js:336:15) 任何帮助表示感谢,谢谢!

如何定义没有实际外键的续集关系?

我有这样一个现有的数据库: students: name : string school_id : integer schools: name : string students表上的school_id属性不是实际的外键。 这只是一个整数,代表学生与没有任何外键的学校之间的关系。 有了这样的devise,我怎样才能定义关系的sequelize,所以我可以得到一个学生的学校名称(student.school.name)?

Openshift节点应用程序无法启动

我没有在Openshift上启动我的基于节点的应用程序。 应用程序在本地启动,但是节点的自动部署(在推送到远程主服务器repo)时遇到了日志的循环问题; DEBUG: Running node-supervisor with DEBUG: program './app/server.js' DEBUG: –watch '/var/lib/openshift/53dab282e0b8cdd367000131/app-root/data/.nodewatch' DEBUG: –ignore 'undefined' DEBUG: –extensions 'node|js|coffee' DEBUG: –exec 'node' DEBUG: Starting child process with 'node ./app/server.js' DEBUG: Watching directory '/var/lib/openshift/53dab282e0b8cdd367000131/app-root/data/.nodewatch' for changes. module.js:340 throw err; ^ Error: Cannot find module 'underscore.string' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) […]

Sequelize hasMany / belongsToMany和实例方法

我正在写一个CRUD来pipe理SequelizeJS(版本2.0.0-rc6)和ExpressJS系统中的用户。 一个用户可以在多个用户组中,一组用户可以有多个用户。 问题是,当我尝试添加用户到一组用户时,sequelize正在抛出以下错误: Possibly unhandled TypeError: Cannot call method 'replace' of undefined at Object.module.exports.removeTicks (/home/app/node_modules/sequelize/lib/utils.js:512:14) at Object.module.exports.addTicks (/home/app/node_modules/sequelize/lib/utils.js:508:29) at Object.module.exports.QueryGenerator.quoteIdentifier (/home/app/node_modules/sequelize/lib/dialects/postgres/query-generator.js:881:22) at generateJoinQueries (/home/app/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1100:72) at Object.<anonymous> (/home/app/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1165:29) at Array.forEach (native) at Object.module.exports.QueryGenerator.selectQuery (/home/app/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1164:25) at module.exports.QueryInterface.select (/home/app/node_modules/sequelize/lib/query-interface.js:679:35) at null.<anonymous> (/home/app/node_modules/sequelize/lib/model.js:728:34) 模型/用户group.js module.exports = function(sequelize, DataTypes) { var UserGroup = sequelize.define("UserGroup", { id: { type: DataTypes.INTEGER, autoIncrement: […]

NodeJS使用自定义引用字段对数据源进行绑定

我定义了以下模型: module.exports = function(sequelize, DataTypes) { // Brand var Brand = sequelize.define("Brand", { name: DataTypes.STRING },{tableName: "brand"}); // Product_Type var Product_Type = sequelize.define("Product_Type", { name: DataTypes.STRING },{tableName: "product_type"}); // Product var Product = sequelize.define("Product", { name: DataTypes.STRING, product_type_id: { type: DataTypes.INTEGER, references: Product_Type, referencesKey: "id" }, brand_id: { type: DataTypes.INTEGER, references: Brand, referencesKey: "id" }, […]

使用Node'pg'库连接到Amazon Redshift

我正在尝试使用“pg”库将我的API连接到Redshift的一个实例,但出现以下错误: Possibly unhandled error: SET TIME ZONE is not supported at Connection.parseE (/Users/henrylee/WebstormProjects/project-api/node_modules/pg/lib/connection.js:534:11) 我知道Redshift不支持时区的设置,但我并不真正关心这一点。 我似乎无法find任何帮助如何克服这个问题,所以任何inout将不胜感激。 谢谢!

Nodejs – sequelize hasMany急切加载

我正在使用sequelize最新版本,只是我需要急于加载模型“VenueAddress”find“Venue”模型时,但我得到以下错误: 我感谢您的帮助。 TypeError: Cannot read property 'replace' of undefined at Object.module.exports.removeTicks (d:\GitProjects\bashed\node_modules\sequelize\lib\utils.js:595:13) at Object.module.exports.addTicks //find方法: db.Venue.find({ where: {venueId: id},include: [{model: db.VenueAddress}]}).then(function(venue){ if(!venue) { return next(new Error('Failed to load venue ' + id)); } else { req.venue = venue; return next(); } }).catch(function(err){ return next(err); }); //楷模 Venue.hasMany(models.VenueAddress, {through: models.VenueAddress,foreignKey: 'venueId'}); VenueAddress.belongsTo(models.Venue, {through: models.VenueAddress,foreignKey: 'venueId'});

添加限制sequelize findAll破坏查询?

我试图返回一组Model ,使用limit和offset分页,包括该模型的collections夹的分组计数。 一个相当微不足道的事情来尝试。 这是我的基本查询设置与sequ​​elize: var perPage = 12; var page = 1; return Model.findAll({ group: [ 'model.id', 'favorites.id' ], attributes: [ '*', [ Sequelize.fn('count', Sequelize.col('favorites.id')), 'favorites_count' ] ], include: [ { attributes: [], model: Favorite }, ], offset: perPage * page 这生成(相当)预期的查询: SELECT "model"."id", "model".*, Count("favorites"."id") AS "favorites_count", "favorites"."id" AS "favorites.id" FROM "model" AS "model" […]

为调度应用程序添加模型关联

我正在开发一个应用程序来处理大型侦察兵营的程序调度。 我关心的主要模型是: 程序代表一个单独的程序活动(例如,皮划艇,山地自行车等等。这个模型有很多领域,没有一个与这个问题相关。 var Program = sequelize.define("Program", { name: { type: DataTypes.STRING, allowNull: false }, max_participants_per_period: DataTypes.INTEGER, […bunch of other fields…] }, { underscored: true, classMethods: { associate: function(models) { Program.hasMany(models.ProgramPeriod); } } }); 每个程序都安排在一个ProgramPeriod中。 ProgramPeriod有一个开始和结束时间。 不同的节目不同的时间(有些是半天,有些是全天等)。 var ProgramPeriod = sequelize.define('ProgramPeriod', { start_at: DataTypes.DATE, end_at: DataTypes.DATE }, { underscored: true, classMethods: { associate: function(models) { […]

使用Node Webkit,Sequelize和SQLite3,保存()和get()失败

我不完全确定我的问题是什么,但标题是我最好的猜测。 包括我的错误日志和思考过程。 我希望有人能帮帮忙。 /Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/captured_trace.js:478 Unhandled rejection Error: TypeError: Illegal invocation at Object.ensureErrorObject (/Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/util.js:228:20) at Promise._rejectCallback (/Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:416:22) at Promise._settlePromiseFromHandler (/Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:460:17) at Promise._settlePromiseAt (/Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:530:18) at Promise._settlePromises (/Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:646:14) at Async._drainQueue (/Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/async.js:177:16) at Async._drainQueues (/Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/async.js:187:10) at Immediate.Async.drainQueues [as _onImmediate] (/Users/fjcero/project/node_modules/sequelize/node_modules/bluebird/js/main/async.js:15:14) at processImmediate [as _immediateCallback] (timers.js:321:17) 我开始使用SQLite作为单个应用程序数据存储。 我selectSequelize作为ORM,因为它非常简单。 在web上下文中,这意味着通过Node.js运行应用程序一切正常。 当我尝试在NW.js上下文中运行相同的应用程序时,问题就开始了。 首先,SQLite3应该以特定的方式进行编译。 我做到了,一切顺利。 我定义了Sequelize模型,并且在执行sync()时,如果不存在,则创build所有表,并且架构是指定的。 这意味着,在某些时候SQLite3和Sequelize连接良好,一切都如预期的那样。 当我尝试使用save()或get()方法时,奇怪的问题就开始了,因为带Promise的东西失败了。 我想这可能是由于支持NW编译的SQLite模块。 我不知道这是库故障,还是一些缺失的标志,或者NW上下文在Sequelize和SQLite通信之间打破了什么。 既然这只发生在一个NW的背景下,我select在这里问,所以我可以知道我做错了什么,或者我怎么能debugging这个东西。 任何起点都将被赞赏,无论是解决scheme,还是解释如何在Node Webkit中进行debugging。