Articles of sequelize.js

查询连接表,但不会在Sequelize中获取两个关联

考虑以下模型: var User = sequelize.define('User', { _id:{ type: Datatypes.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, name: Datatypes.STRING, email:{ type: Datatypes.STRING, unique: { msg: 'Email Taken' }, validate: { isEmail: true } } }); var Location= sequelize.define('Location', { _id:{ type: Datatypes.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, name: Datatypes.STRING, address: type: Datatypes.STRING }); Location.belongsToMany(User, […]

交易restAPI

我正在一个项目,我需要实现事务回滚PostgreSQL数据库durin REST操作使用Nodejs。 我已经分别为GET,PUT和POST方法实现了事务。 我需要使用交易一次还是我正确的轨道? 在此先感谢您的帮助。 我想确保我的数据库回滚数据,如果需要的话。 我正在使用pg-promise库来获得结果。 db.tx(t => { return t.batch([ t.query('UPDATE users SET active = $1 WHERE id = $2', [true, 123]), t.query('INSERT INTO audit(event, id) VALUES($1, $2)', ['activate', 123]) ]); }) .then(data => { // success; }) .catch(error => { // error; }); 或者,我应该在下面实施方法吗? module.exports = { // if you can run […]

Node + Sequelize:如何在添加之前检查项目是否存在? (asynchronous混淆)

不幸的是,对于节点的asynchronous/同步执行,我对节点很陌生。 我正在使用节点,与sqlite和async.js sequelize。 我有一系列的Articles ,每个Articles都有一些Authors 。 对于每篇Article每位Authors ,我想检查Author存在。 如果没有,创build它。 问题是,在最初运行时,重复作者正在创build,我认为由于asynchronousfunction导致检查存在的问题。 例如,用数组: authors = ['A. Test', 'B. Test', 'C. Test', 'A. Test'] authors = ['A. Test', 'B. Test', 'C. Test', 'A. Test'] 和代码: async.each(authors, function(item, callback){ Author.sync().then(function(){ Author.count({ where: {name: item.trim()} }).then(function(count){ if (count != 0) { console.log('Author already exists') } else { console.log('Creating author…') Author.create({ […]

将外键作为复合主键encryption

可以将两个外键定义为模型的复合主键? 用户只能是一个家庭的成员,一个家庭可以有很多成员,家庭成员表需要用户和家庭的参考 const User = sequelize.define( 'User', { id: { type: dataTypes.INTEGER.UNSIGNED, autoIncrement: true, primaryKey: true }, name: { type: dataTypes.STRING(30) }, email: { type: dataTypes.STRING(30) } … }, { classMethods: { associate(models) { User.hasOne(models.FamilyMember, { foreignKey: 'user_id' } } } } ) const Family = sequelize.define( 'Family', { name: { type: dataTypes.STRING(30) } }, […]

如何将本地date时间存储在续集中?

我使用的是续集版本2.0.0-rc8。 当我存储本地date时间,它始终存储UTCdate时间。 是否有可能使用sequelize存储本地date时间?

续编upsert

我需要得到插入/更新logging的id时使用.upsert()在sequelize。 .upsert()返回一个布尔值,指示行是否被创build或更新。 return db.VenueAddress.upsert({ addressId:address.addressId, venueId: venue.venueId, street: address.street, zipCode: address.zipCode, venueAddressDeletedAt: null }).then(function(test){ //test returned here as true or false how can i get the inserted id here so i can insert data in other tables using this new id? });

无法用sequelize连接到SQL Azure数据库,但本地主机上的SQL Server工作正常

我已经用MongoDB部署了Heroku的几个站点,但是这是我第一次使用SQL创build站点并尝试部署到Azure,所以我可能会丢失一些明显的东西。 我一直在使用Node.js(SQL Server数据库)和Sequelize(作为ORM)开发我的开发机器上的网站。 一切工作正常,但是当我试图部署到连接string的Azure我无法连接到SQL Azure数据库。 我可以使用SQL Server Management Studio连接到Azure上的空数据库,所以我确定我的连接信息是正确的。 当我尝试部署到Azure时,我尝试使用Azure提供的连接string: var Sql = require('sequelize'); var sql = new Sql('Driver={SQL Server Native Client 11.0};Server=tcp:server.database.windows.net,1433;Database=databasename;Uid=UserName@server;Pwd={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'); 当我尝试连接这个string时,我得到的错误是: C:\Users\username\Documents\GitHub\event-site\node_modules\sequelize\lib\sequelize.js:110 options.dialect = urlParts.protocol.replace(/:$/, ''); ^ TypeError: Cannot read property 'replace' of null at new Sequelize (C:\Users\v-mibowe\Documents\GitHub\event-site\node_modules\sequelize\lib\sequelize.js:110:40) at Object.<anonymous> (C:\Users\v-mibowe\Documents\GitHub\event-site\routes\db-routes.js:68:11) at Module._compile (module.js:435:26) at Object.Module._extensions..js (module.js:442:10) at Module.load (module.js:356:32) at […]

Sequelize:如何使用左外连接对连接表执行WHERE条件

我的数据库模型如下: 一名员工驾驶一辆或零辆车 一辆车可以由一名或多名员工驾驶 车辆有一个模型types,告诉我们它的燃料types等。 我想继续把我们所有的员工带到不驾驶车辆的地方,或者如果他们这样做,那么车辆不是柴油的。 那么VehicleID为null或者Vehicle.VehicleModel.IsDiesel = false 我目前的代码如下: var employee = sequelize.define('employee', { ID: Sequelize.INTEGER, VehicleID: Sequelize.INTEGER }); var vehicle = sequelize.define('vehicle', { ID: Sequelize.INTEGER, ModelID: Sequelize.INTEGER }); var vehicleModel = sequelize.define('vehicleModel', { ID: Sequelize.INTEGER, IsDiesel: Sequelize.BOOLEAN }); employee.belongsTo(vehicle); vehicle.belongsTo(vehicleModel); 如果我运行以下: options.include = [{ model: model.Vehicle, attributes: ['ID', 'ModelID'], include: [ { model: model.VehicleModel, […]

使用BCrypt和Sequelize模型

我试图用我的sequelize模型使用bcrypt-nodejs包,并试图按照教程将哈希合并到我的模型中,但是我在generateHash得到一个错误。 我似乎无法弄清楚这个问题。 有没有更好的方法来joinbcrypt? 错误: /Users/user/Desktop/Projects/node/app/app/models/user.js:26 User.methods.generateHash = function(password) { ^ TypeError: Cannot set property 'generateHash' of undefined at module.exports (/Users/user/Desktop/Projects/node/app/app/models/user.js:26:27) at Sequelize.import (/Users/user/Desktop/Projects/node/app/node_modules/sequelize/lib/sequelize.js:641:30) 模型: var bcrypt = require("bcrypt-nodejs"); module.exports = function(sequelize, DataTypes) { var User = sequelize.define('users', { annotation_id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, firstName: { type: DataTypes.DATE, field: 'first_name' }, lastName: […]

如何用外键创build带有sequelize或sequelize-cli的连接表

我正在为两种types创build模型和迁移,玩家和团队有许多关系。 我使用sequelize模型:创build,但不看如何指定外键或连接表。 sequelize model:create –name Player –attributes "name:string" sequelize model:create –name Team –attributes "name:string" 模型创build后,我添加关联。 玩家: Player.belongsToMany(models.Team, { through: 'PlayerTeam', foreignKey: 'playerId', otherKey: 'teamId' }); 团队: Team.belongsToMany(models.Player, { through: 'PlayerTeam', foreignKey: 'teamId', otherKey: 'playerId' }); 然后迁移与运行 sequelize db:migrate 有玩家和团队的表,但数据库中没有连接表(也不是外键)。 如何创build外键和连接表? 有没有关于如何做到这一点的权威指南?