Tag: sequelize.js

如何处理先调用sequelize.sync()?

我在nodejs中开发有点新,所以这可能是一个简单的问题。 我正在build立一个典型的Web应用程序基于快递+续订。 我在内存中使用sqlite,因为我现在只是原型。 我明白,如果我要使用持续的sqlite文件,这可能不是一个问题,但这不是我目前的目标。 考虑以下: var User = sequelize.define("User", { "username": DataTypes.STRING, // etc, etc, etc }); sequelize.sync(); User.build({ "username": "mykospark" }); 起初,我在User.build()方面得到了关于Users表不存在的错误。 我意识到sequelize.sync()被称为asynchronous,插入发生在表创build之前。 然后,我重新安排我的代码,以便User.build()调用是在sequelize.sync()。complete()修复问题,但我不知道如何将其应用到我的项目的其余部分。 我的项目在一堆不同的地方使用模型。 这是我的理解,我只是想在我的模型定义后调用sequelize.sync()一次,然后他们可以自由使用。 我可能会find一些方法来阻止整个nodejs应用程序,直到sequelize.sync()完成,但这似乎不是好的forms。 我想我可以将每一个模型操作包装到sequelize.sync()。complete()调用中,但是这看起来不正确。 那么人们通常如何处理呢?

用大整数串起js

我有一个应用程序写在节点JS和使用Sequelize JS ORM库来访问我的数据库是MySql。 我的问题是,我的数据库中有一列是BIGINT,当它的值很大时,我检索到错误的值。 例如当数据库中的值是: 10205918797953057我得到10205918797953056当我得到它使用sequelize。 我尝试使用big-integer库,但我没有运气。 欢迎任何意见。 PS:我无法将数据types更改为VARCHAR。

Sequelize hasMany通过另一个表

好的,我有以下三种models 模块: var Module = sequelize.define('module', { id: DataTypes.INTEGER, name: DataTypes.STRING, description: DataTypes.STRING, category_id: DataTypes.STRING, module_type_id: DataTypes.STRING, gives_score: DataTypes.INTEGER, duration: DataTypes.STRING, price: DataTypes.STRING }, { freezeTableName: true} ) 权限: Competence = sequelize.define('competence', { id: DataTypes.INTEGER, name: DataTypes.STRING, organization_id: DataTypes.INTEGER, competence_type_id: DataTypes.INTEGER },{freezeTableName:true}) Module_has_competence: Module_has_competence = sequelize.define('module_has_competence', { id: DataTypes.INTEGER, module_id: DataTypes.INTEGER, competence_id: DataTypes.INTEGER, score: DataTypes.STRING […]

sequelize.define错误:在nodejs中没有方法“define”

这是我pipe理所有数据库模型的managedb.js: var Sequelize = require('sequelize-postgres').sequelize var postgres = require('sequelize-postgres').postgres var db = new Sequelize('testdb', 'postgres', 'postgres', { dialect: 'postgres' }) var models = [ 'user' ]; models.forEach(function(model) { module.exports[model] = db.import(__dirname + '/' + model); }); exports.db = db; 这是我的user.js var sequelize = require("sequelize"); var seq = require("./managedb"); var db = seq.db; var Project = […]

Sequelize.js – 在“创build”或“build立”调用期间的模型关联

我有一个需要关联/外键的数据模型。 有没有办法在模型创build过程中强制执行这个约束,而不会陷入鸡/蛋的情况? 比方说,我有一个User类,它需要至less有一个device与它关联。 同样,该device必须属于一个用户。 像这样的东西(未经testing的代码,不介意语法错误): User = db.define("user", { name: Sequelize.STRING }) Device = db.define("device", { uuid: Sequelize.STRING }) User.hasMany(Device) 我想确保在首次调用create时,我拥有所有Device信息以及所有User信息。 保持“胖模型,瘦控制器”我想把这个到我的模型。 有没有可能做这样的事情? user = User.create( name: "jesse" device: uuid: "84e824cb-bfae-4d95-a76d-51103c556057" ) 我可以重写create方法吗? 还是有一些types的保存事件钩我可以使用?

Sequelize:需要vs导入

在sequlize的文档中,他们使用像这样的导入function // in your server file – eg app.js var Project = sequelize.import(__dirname + "/path/to/models/project") // The model definition is done in /path/to/models/project.js // As you might notice, the DataTypes are the very same as explained above module.exports = function(sequelize, DataTypes) { return sequelize.define("Project", { name: DataTypes.STRING, description: DataTypes.TEXT }) } 但是,这会有什么问题呢? // in your […]

Sequelize在何处声明与date

我使用sequelize作为我的后端ORM。 现在我想在date上做一些操作。 更多Spenceficly我想获取所有的数据,从现在起7天前。 问题是该文档不指定您可以在Datatypes.DATE执行哪些操作 任何人都可以指向正确的方向吗?

一个迁移文件中有多个迁移语句

我试图在一个迁移文件中执行多个迁移语句,以便一次性更改同一个表的多个列。 我想知道我是否以写作的方式去做,还是有更好更合适的方法去做: 迁移代码 module.exports = { up: function(queryInterface, Sequelize, done) { queryInterface.changeColumn('users', 'name', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'address', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'city', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'state', { type: Sequelize.STRING, […]

Sequelize:按列更新它的旧值

我正在尝试更新一组数据使用Sequelize由此查询 Users.update({ flag: 'flag & ~ 2' } , { where : { id :{ gt : 2 } } }) 生成的查询是 UPDATE `users` SET `flag`='flag & ~ 2' WHERE id > 2 但应该是 UPDATE `users` SET `flag`=flag & ~ 2 WHERE id > 2 所以我的问题是如何更新数据的旧值 问候

在MySQL中使用sequelize自动递增id

我在NodeJS中有以下模型和sequelize和一个MySQL数据库: var Sequelize = require('sequelize'); var User = sequelize.define('user', { id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true }, … }; 我想用下面的代码添加一个新的用户到我的数据库: sequelize.transaction().then(function(t) { User.create({/* User data without id */}, { transaction: t }).then(function() { t.commit(); }).catch(function(error) { t.rollback(); }); }); 之后,我得到了下一个错误: Executing (47f19f7b-a02d-4d72-ba7e-d5045520fffb): START TRANSACTION; Executing (47f19f7b-a02d-4d72-ba7e-d5045520fffb): SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; […]