Articles of sequelize.js

如何立即保存在一个Sequelize beforeCreate钩子?

我试图在创build和保存密码之前对其进行哈希处理。 然而,当我有我的钩子定义如下,我注意到日志创build一个来宾实例与原始密码,然后立即更新它。 我不知道为什么。 // define model const Guest = sequelize.define('guest', { email: { type: Sequelize.STRING, allowNull: false, }, password: { type: Sequelize.STRING, allowNull: false, } }); Guest.beforeCreate(function(guest) { bcrypt.genSalt(10, function(error, salt) { if (error) { return error } bcrypt.hash(guest.password, salt, null, function(error, hash) { if (error) { return error } guest.password = hash; guest.save(); }) […]

Sequelize删除多个关联

嗨,我有以下表格 models.User= sequelize.define("User", { name: { type: DataTypes.STRING, allowNull: false, unique: true } }); models.Group= sequelize.define("Group", { name: { type: DataTypes.STRING, allowNull: false, unique: true } }); db.User.belongsToMany(db.Group, { "through": "UsersGroup" }); db.Group.belongsToMany(db.User, { "through": "UsersGroup" }); 有一种方法可以立即删除组中的多个用户,给定组名称以及要删除的名称(用户)? 喜欢: var groupName = 'Work'; var users = ['Alice','Bob'] 所以我需要删除工作组和{Alice和Bob}之间的关联

在Sequelize中使用JOIN

提示如何在Sequelize中使用JOIN? 我有以下代码: db.User.findAll({ attributes: ['id'], where: {vipEnd: {lt: expiresVip}, vip: true}, limit: 100, order: 'id' }).then(function(users) { 4,看起来像这样: SELECT "vkId" AS "id" FROM "user" AS "user" WHERE "user"."vipEnd" < 1469699683 –expiresVip AND "user"."vip" = true ORDER BY id LIMIT '100'; 如何实现这样的结果? SELECT "vkId" AS "id" FROM "user" AS "user" LEFT JOIN "notification" ON "notification"."userId" = […]

使用环境variables来进行本地的续集configuration

我正在寻找使用sequelize我的项目的config.json文件中的环境variables。 我使用dotenv在本地设置环境variables。 我的config.json文件看起来像这样 { "development": { "username": process.env.DB_USER, "password": process.env.DB_PASS, "database": process.env.DB_DATABASE, "host": process.env.DB_HOST, "dialect": "mysql" }, "test": { "username": "root", "password": null, "database": "database_test", "host": "127.0.0.1", "dialect": "mysql" }, "production": { "use_env_variable": "JAWSDB_URL", "dialect": "mysql" } } 我遇到的问题是我不能在config.json文件中使用variables。 它看起来像生产我可以使用“use_env_varable”键,并使用envvariables为我的连接string。 所以我想我需要一种方法来找出我的本地mysql数据库的组合连接string或使用config.json中的variables的方法。 任何解决scheme

将数据保存到belongsToMany创build的表中,并从中读取(最后的解决scheme)

我正在使用我的后端Node.js,Express.js和Sequelize连接到数据库。 我有一个:任务和键之间的关系。 任务和密钥由我和TaskKey通过Sequelize创build: 后端 // Tasks n:m Keys db.DictKey.belongsToMany(db.Task, { through: 'TaskKeys' , foreignKey:'key_id'}); db.Task.belongsToMany(db.DictKey, { through: 'TaskKeys' , foreignKey: 'task_id'}); 现在,如果我创build一个新的任务 前端 $scope.create = () => { this.$http.post('/api/tasks', { user_id: $scope.selectUser, lang_id: $scope.selectLang, name: $scope.newTask }); } 我想用这个请求发送一个用户select的所有键的数组。 在后端它应该添加一个条目到任务发送的每个Dict的新任务的任务键。 例如 表任务: ID | some values 1 | some values | this is the new […]

所有INCLUDE都包含WHERE子句

i want to perform this query in sequelize models: SELECT Cou.country_id,cou.country_name, Sta.state_id, Sta.state_name, Dis.district_id, Dis.district_name,Cit.city_id, Cit.city_name,Loc.location_id,Loc.location_name,Sub_Loc.sub_location_id,Sub_Loc.sub_location_name,Prop.property_id,Prop.property_name,Prop.hp_builders_id, Bud.builders_id,Bud.builders_name FROM hp_country Cou INNER JOIN hp_state Sta ON Cou.country_id = Sta.hp_country_id INNER JOIN hp_district Dis ON Sta.state_id = Dis.hp_state_id INNER JOIN hp_city Cit ON Dis.district_id = Cit.hp_district_id INNER JOIN hp_location Loc ON Cit.city_id = Loc.hp_city_id INNER JOIN hp_sub_location […]

续集查询多对多关系和访问对象

我有一个案例,我从两个表中查询信息,这个表与“through”表有多对多的关系。 当我做我的查询看来,我正在查询正确的查询不使用“通过”表作为表连接参考和接收与两个表属性输出的logging,但我无法访问连接表的字段属性。 这里是输出的值。 {"fullNameSlug":"Tester Test","email":"test@test.com","firstName":"Tester","lastName":"Test","teams":[{"teamName":"Sales","member":{"memberId":1,"memberEmail":"test@test.com","organizationId":1,"teamId":1,"userId":1,"created_at":"2016-08-21T21:15:19.000Z","updated_at":"2016-08-21T22:00:32.000Z","organization_id":1,"team_id":1,"user_id":1}}]} 这是我的查询,我如何设置数据: .get(function(req, res){ models.User.find({ where: { organizationId: organization.organizationId }, attributes: ['email', 'firstName', 'lastName'], include: [{ model: models.Team, attributes: ['teamName'] }] }); }).then(function(currentUsers){ res.jsonp(currentUsers); console.log(currentUsers); }); 以下是我在视图中尝试访问teamName的方法: {{currentUsers.teams.teamName}} ,它不返回值,但{{currentUsers.email}}返回正确的用户电子邮件。 用户表: module.exports = function(sequelize, DataTypes) { var User = sequelize.define('user', { userId: { type: DataTypes.INTEGER, field:'user_id', autoIncrement: true, primaryKey: true }, firstName: […]

循环与Sequelize

我是新来的asynchronous编程,目前坚持这个简单的任务。 我有一个有20Klogging,需要处理所有logging的Mysql表。 目前的方法是循环在一批logging。 let limit = 100; let offset = 0; sequelize.query(`Select * from abc limit ${limit} offset ${offset}`, {type: sequelize.QueryTypes.SELECT}).then((records) => { // process return processResult; }); 因此,我需要增加while循环中的偏移量。 while (/*….*/) { let p = sequelize.query(`Select * from abc limit ${limit} offset ${offset}`, {type: sequelize.QueryTypes.SELECT}).then((records) => { // process records return processResult; }); offset += […]

使用具有Sequelize(ORM)的Node.js中现有的Postgres-DB,

我在Node.js和Postgres中很新手,我的问题很简单: 有可能使用Sequelize同步现有的Postgres-DB(包含表(和数据)),而不重写模型和关系? CRUD基本操作如何? 提前致谢!

MySQL与Sequelize:ER_BAD_DB_ERROR:未知的数据库

我正在学习下面的代码: var Sequelize = require('sequelize') var sequelize = new Sequelize('basic-mysql-database.mysql', 'root', 'password', { 'dialect': 'mysql', 'host': "localhost", "port": "3306" }); var Todo = sequelize.define('todo', { description: { type: Sequelize.STRING }, completed: { type: Sequelize.BOOLEAN } }) sequelize.sync().then(function(){ console.log('Everything is synced') Todo.create({ description: 'Walking my dog', completed: false }).then(function (todo){ console.log('Finished!') console.log(todo) }) }); 我已经安装了MySQL。 当我进入Settings […]