Articles of sequelize.js

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() } }

node-webkit错误:请手动安装sqlite3包

我正在使用node-webkit , Sequelize和sqlite3 。 节点运行的应用程序没有问题,但是当我从node-webkit运行它会引发这个错误 "Uncaught Error: The dialect sqlite is not supported. (Error: Please install sqlite3 package manually)", source: /Users/mariowise/projects/node-webkit/requies-pos/node_modules/sequelize/lib/sequelize.js (176) 这是我的依赖 "dependencies": { "express": "~4.2.0", "static-favicon": "~1.0.0", "morgan": "~1.0.0", "cookie-parser": "~1.0.1", "body-parser": "~1.0.0", "debug": "~0.7.4", "jade": "~1.3.0", "nunjucks": "^1.0.5", "sqlite3": "~2.1.19", "config": "0.4.33", "sequelize": "~2.0.0-rc1", "sequelize-sqlite": "~1.7.0" }

node.js sequelize:多个“where”查询条件

我如何查询具有多个条件的表? 这里是两个工作的例子: Post.findAll({ where: ['deletedAt IS NULL'] }).success() 和 Post.findAll({ where: {topicId: req.params.id} }).success() 那么,如果我需要结合条件,我觉得我需要做类似的事情 Post.findAll({ where: [{topicId: req.params.id}, 'deletedAt IS NULL'] }).success() ,但它不起作用。 什么是续集等待的语法? 节点debugging说: DEBUG:TypeError:Object#没有方法'replace' 如果重要的话

在Sequelize.js中使用dynamicsearch参数

我试图在他们的网站上按照Sequelize教程 。 我已经达到了以下代码行。 Project.findAll({where: ["id > ?", 25]}).success(function(projects) { // projects will be an array of Projects having a greater id than 25 }) 如果我稍微调整它如下 Project.findAll({where: ["title like '%awe%'"]}).success(function(projects) { for (var i=0; i<projects.length; i++) { console.log(projects[i].title + " " + projects[i].description); } }); 一切正常。 但是,当我尝试使search参数dynamic如下 Project.findAll({where: ["title like '%?%'", 'awe']}).success(function(projects) { for (var i=0; […]

使用分组和连接

我在PostgreSQL数据库上有两个表,合同和付款。 一份合同有多个付款。 我有以下两个模型: module.exports = function(sequelize, DataTypes) { var contracts = sequelize.define('contracts', { id: { type: DataTypes.INTEGER, autoIncrement: true } }, { createdAt: false, updatedAt: false, classMethods: { associate: function(models) { contracts.hasMany(models.payments, { foreignKey: 'contract_id' }); } } }); return contracts; }; module.exports = function(sequelize, DataTypes) { var payments = sequelize.define('payments', { id: { type: […]

在Sequelize中使用实例方法

有人可以帮我理解如何在Sequelize中使用实例方法吗? 我已经阅读了文档,但发现它是稀疏的。 目前,我正在尝试在我的用户模型上使用setPassword和verifyPassword实例方法。 当我尝试调用REPL中的代码时,在导入用户模型并同步数据库之后,我得到以下结果: > models.User.setPassword('test'); TypeError: Object [object Object] has no method 'setPassword' 以下是用户模型的代码: var bcrypt = require('bcrypt'); module.exports = function(sequelize, DataTypes) { return sequelize.define('User', { email: { type: DataTypes.STRING, unique: true, allowNull: false, validate: { isEmail: true } }, password: { type: DataTypes.STRING, allowNull: false}, firstName: {type: DataTypes.STRING}, lastName: {type: DataTypes.STRING}, companyName: {type: […]