Tag: sequelize.js

Sequelize.js事务没有回滚

您好了一个问题,续集js和交易。 所以我想做的是嵌套插入和提交成功,回滚,否则这里是一个片段,这是由于某种原因,不适合我的工作。 sequelize() .transaction(function(t){ myModel .create({ name: 'shawn; }, {transaction: t}) .success(function(newModel) { myModel .create({ name: 'shawn; }, {transaction: t}) .success(function(newModel) { t.commit()}) .error(function(err) {t.rollback()}) } .error(function(err) {t.rollback()}); }); 不要介意任何语法错误我正在寻找debugging的逻辑。 当我用回滚replace成功提交语句时,会出现问题我没有得到2插入行回滚? 关心肖恩

SequelizeJS中的缓慢关联

我正在尝试诊断使用SequlizeJS作为ORM的快速应用程序中某些缓慢起因的原因。 我有一个模型,有2个hasMany&与另外两个模型hasOne关系: 更新 :我使用classMethods#关联函数在define调用中创build了关联。 // Model1 classMethods: { associate: function(models) { Model1.hasMany(models.Model2); Model1.hasMany(models.Model3); Model1.hasOne(models.Model2, {as: 'next', foreignKey: 'model2_next'}); } } // Model2 classMethods: { associate: function(models) { Model2.belongsTo(models.Model1, {foreignKey: 'model2_next'}); } } 如果我按照以下方式查询它们: db.Model1.find({ where: { /* Simple where statement */ }, include: [ db.Model2, db.Model3, { model: db.Model2, as: 'next' }, ] }).complete(function(err, data) […]

在callback函数中导出模块?

有没有办法导出一些callback函数内的variables? 例如,如果我需要在另一个文件中使用room.room_id,我应该怎么做? 我试过module.exports.roomId = room.room_id,但在另一个文件的roomId似乎是undefined.thanks! var Room = require('../models/database').Room exports.create = function (req, res) { Room .create({ room_name: req.body.roomName }) .complete(function () { Room .find({where: {room_name: req.body.roomName}}) .success(function (room) { // if(err) console.log(err); res.redirect('rooms/videochat/' + req.body.roomName + '/' + room.room_id); console.log("room_id: " + room.room_id); module.exports.roomId = room.room_id; }) }) };

用Sequelizejs检索多行

我开始学习SequelizeJs,但是我遇到了一个小问题:我有一个定义如下的模型: var ex_table= sequelize.define("ex_table", { concept1: Sequelize.STRING(5), concept2: Sequelize.STRING(80), concept3: Sequelize.STRING, weight: Sequelize.INTEGER, value: Sequelize.DECIMAL(20,2) }, { tableName: "samble_table"}); 从表格中检索单行,我这样做: ex_table .find({where: Sequelize.and({weight: 320193}, {concept1: 'AGLOK'}, {concept2: 'lambda'}, {concept2: 'Industry Group'})}) .complete(function (err, result) { if (!!err) { console.log("An error occurred while creating the table:", err); } else { console.log(result.values); } }) 这给我一行数据,这是预期的。 但是,当我试图像这样检索多行: ex_table […]

无法与Sequelizebuild立一对一的关系

我宣称: Item.hasOne(Item, { foreignKey: 'parentAid', as: 'Parent' }) 我质疑: Item.find({where : {aid: aid}, include: [Item]}).complete(function(err, article) { .. }; 我得到: Error: Item is not associated to Item! 我究竟做错了什么? ………………………………………….. …………………………………….. 更新1 感谢Jan Aargaard Meier的有益回答,我能够改变: ItemModel.belongsTo(ItemModel, { foreignKey: 'parentAid', as: 'Parent', foreignKeyConstraint: true }); ItemModel.hasMany(ItemModel, { as: 'Children', constraints: false }); this.articleRelations.push({ model: ItemModel, as: 'Parent' […]

我如何在openshift上安装全局节点模块?

我需要安装node.js模块sequelize-cli作为全局在我的sequelize ORM模式从ssh命令行使用数据库迁移。 要安装模块,我可以运行一个ssh命令: npm install -g sequelize-cli 应用程序规模如何pipe理?

使用Postgresql模式和Sequelize

我正在尝试删除模式中的所有表(Postgres 9.3)。 在创build模型时,我已经指定了它们属于哪个模式。 model.schema( "schema_name") 我能够在这个特定的模式中生成所有的表格。 这里没问题。 但是,当我想删除表中相同的模式,我不得不明确设置searchpath,以成功。 db.sequelize.query("set search_path=consumer") .then( function( arg ){ db.sequelize.drop({cascade:true}) .then( function( arg ){ fulfill( arg ); },function( err ){ reject( err ); }); }); 当Sequelize声称支持PostgreSQL模式时,我期望这个细节一定是被照顾的(因为大多数其他function工作得非常好!)。 所以我的问题是:我是否必须设置searchpath,或者我错过了一些我没有使用的选项?

与Sequelize交易不起作用

我想build立一个简单的networking表单,你可以input一个人的名字,姓氏,并为这个人select多个组(但现在是一个) 我正在使用node.js并将其存储在MariaDB数据库中。 Sequelize根据定义的模型创build了表Persons , Groups和GroupsPersons 。 var Sequelize = require("sequelize"); var sequelize = new Sequelize(config.database, config.username, config.password, config); var Group = sequelize.define("Group", { name: { type: DataTypes.STRING, allowNull: false } } var Person = sequelize.define("Person", { firstName: { type: DataTypes.STRING, allowNull: false }, lastName: { type: DataTypes.STRING, allowNull: false } } Person.belongsToMany(Group, {as: 'Groups'}); Group.belongsToMany(Person, […]

续集获取虚拟领域

出于同步的原因,我想创build一个行的某些领域的散列作为一个虚拟的领域。 我的续集模型看起来像这样: var crypto = require('crypto'); module.exports = function(sequelize, DataTypes) { return sequelize.define('transactions', { id: { type: DataTypes.INTEGER, primaryKey: true }, randomfieldone: { type: DataTypes.BIGINT, allowNull: true, }, randomfieldtwo: { type: 'NUMERIC', allowNull: false, }, hash: { type: DataTypes.VIRTUAL, set: function (val) { var string = this.randomfieldone+''+this.randomfieldtwo; var hash = crypto.createHash('md5'); hash.update(string); hash.digest('hex'); this.setDataValue('hash', hash); […]

sequelize有没有更改跟踪内置机制?

我想知道是否实施(或计划实施)任何更改跟踪机制,其目标是避免运行不必要的查询。 例如: var user = sequelize.User.find { where: { name: 'bob' } }; user.name = 'john'; user.save(); 续集将会更新用户名。 现在,想象一下这个任务是不存在的。 var user = sequelize.User.find { where: { name: 'bob' } }; user.save(); 是sequelize足够聪明,弄清楚,不需要数据库更新(而不会做一个)? 是否有任何标记暴露在后续对象中,以查看是否对模型做了任何更改? 或者我应该简单地testing每个属性对原始模型? 我注意到在sequelize模型中有一个user._previousDataValues和user.options.isDirty属性,但是我不确定它们的目的是什么,以及我是否应该以任何方式依赖我的代码。