Tag: sequelize.js

创build或更新Sequelize

我在我的Nodejs项目中使用Sequelize,我发现一个问题,我很难解决。 基本上我有一个cron从服务器获取对象的数组,而不是将其作为对象插入到我的数据库(对于这种情况下,漫画)。 但是,如果我已经有一个对象,我必须更新它。 基本上我有一个对象的数组,可以使用BulkCreate()方法。 但是当Cron重新开始的时候,它并不能解决问题,所以我需要使用一个upsert真正的标志进行某种更新。 主要问题:我必须有一个callback,所有这些创build或更新后才会触发一次。 有没有人有一个想法,我该怎么做? 迭代一个对象数组..创build或更新它,然后得到一个单一的callback后? 感谢您的关注

无法从本地节点应用程序以sequelize连接到heroku postgresql数据库

我试图从Sequelize的本地nodejs应用程序连接到Heroku postgresql数据库。 我遵循这两个指南,一切都在英雄服务器端的工作完全正常,但我的节点应用程序将不会连接到heroku当我在我的Mac本地运行它。 http://sequelizejs.com/articles/heroku https://devcenter.heroku.com/articles/connecting-to-heroku-postgres-databases-from-outside-of-heroku 以下是我如何启动本地应用程序: DATABASE_URL=$(heroku config:get DATABASE_URL) nodemon 得到我: Sequelize: Unable to connect to the database: 但是我通过这样做得到正确的URL: echo $(heroku config:get DATABASE_URL) 这些命令工作正常: heroku pg:psql psql $(heroku config:get DATABASE_URL) 这是我的nodejs代码: var match = process.env.DATABASE_URL.match(/postgres:\/\/([^:]+):([^@]+)@([^:]+):(\d+)\/(.+)/) sequelize = new Sequelize(match[5], match[1], match[2], { dialect: 'postgres', protocol: 'postgres', port: match[4], host: match[3], logging: false }) sequelize .authenticate() […]

协会会议3个桌子,多到很多

我有4张桌子 – client – project – user – userProject 一个项目属于客户端,它需要有客户端外键client_id。 UserProject有project_id和user_id外键,属于项目和用户。 一个用户拥有他的项目的客户。 我如何列出一个用户的客户?

getter和setter如何工作?

问题总结:从概念上讲,什么是getter和setter,以及为什么要使用它们? 摘自http://docs.sequelizejs.com/en/latest/docs/models-definition/?highlight=getterMethods#getters-setters : 可以在模型上定义“对象属性”getter和setter函数,这些函数既可用于映射到数据库字段的“保护”属性,也可用于定义“伪”属性。 “保护”是什么意思? 反对什么? 什么是psuedo属性? 我也在努力处理下面的示例代码。 我们似乎是两次设置“标题”。 v是什么意思? 见下文: var Foo = sequelize.define('Foo', { title: { type : Sequelize.STRING, allowNull: false, } }, { getterMethods : { title : function() { /* do your magic here and return something! */ }, title_slug : function() { return slugify(this.title); } }, setterMethods : { title […]

续集列的唯一约束

使用NodeJS和Sequelize 2.0,我正在写一个迁移来创build一个新表。 除了主键之外,我还想将第二列标记为唯一。 在文档中我找不到任何关于此的信息。 migration.createTable('data', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, key: { // needs to be unique type: DataTypes.UUID, allowNull: false } }) .then(function () { done(); });

HasOne与ORM中序列化的区别

我正在开发与sequelize ORM sails.js应用程序。 对于何时需要使用“属于”和“必须”,我有点困惑。 该文件指出: 属于关联是在源模型上存在一对一关系的外键的关联。 HasOne关联是目标模型上存在一对一关系的外键的关联。 除了指定的地方外,还有其他的区别吗? 这两种情况下的行为是否仍然相同?

使用Sequelize更新关联模型中的属性

是否可以一次更新父模型和相关模型的属性? 我无法正常工作,一直没能find完整的例子。 我不确定它是否是我的代码错误,或者如果它不打算按我期望的方式工作。 我尝试将onUpdate:'cascade'添加到我的hasMany定义中,但是这似乎没有做任何事情。 楷模: module.exports = function( sequelize, DataTypes ) { var Filter = sequelize.define( 'Filter', { id : { type : DataTypes.INTEGER, autoIncrement : true, primaryKey : true }, userId : DataTypes.INTEGER, filterRetweets : DataTypes.BOOLEAN, filterContent : DataTypes.BOOLEAN }, { tableName : 'filter', timestamps : false } ); var FilteredContent = sequelize.define( 'FilteredContent', […]

使用beforeCreate钩子创build模型

我之前定义了我的钩子创build如下: module.exports = function (sequelize, DataTypes) { var userSchema = sequelize.define('User', { // define… }); userSchema.beforeCreate(function (model) { debug('Info: ' + 'Storing the password'); model.generateHash(model.password, function (err, encrypted) { debug('Info: ' + 'getting ' + encrypted); model.password = encrypted; debug('Info: ' + 'password now is: ' + model.password); // done; }); }); }; 当我创build一个模型 User.create({ […]

Sequelize.js外键

使用Sequelize.js时,以下代码不会在表上添加任何外键。 var MainDashboard = sequelize.define('main_dashboard', { title: Sequelize.STRING }, { freezeTableName: true }) MainClient.hasOne(MainDashboard, { foreignKey: 'idClient' }) MainDashboard.hasOne(MainClient, { foreignKey: 'clientId' }) sequelize.sync({ force: true }) 有没有办法强制Sequelize.js添加这些外键约束?

在Sequelize迁移脚本中添加数据?

如何将数据添加到Sequelize迁移脚本中的表中? 这是我得到的: module.exports = { up: function(migration, DataTypes, done) { migration.createTable( 'person', { name: DataTypes.STRING, age: DataTypes.INTEGER }, { charset: 'latin1' // default: null } ); // I want to insert person and age. migration.insert(???); done() }, down: function(migration, DataTypes, done) { migration.dropTable('queue'); done() } }