Articles of sequelize.js

在sequelize getter方法中的asynchronous表查询

我有一个执行数据库查询的sequelize实例方法: getPropertyDays() { const queryString = ` SELECT state FROM property_days WHERE DATE(day) = CURDATE() AND property_id = :propertyId;`; const replacements = {propertyId: this.id}; return this.sequelize.query(queryString, {replacements: replacements, type: sequelize.QueryTypes.SELECT}); }, 被getter调用: getterMethods: { propertyState() { var self = this; const blockedDay = 'x'; const unavailableDay = 'u'; this.getPropertyDays().then(function(result) { var state = result[0]['state']; if […]

Sequelize-创build一个instarnce后不返回承诺

我正在尝试创build新的filter并打印(console.log)刚刚创build的对象的id,但它不会进入.then函数。 代码如下: var Sequelize = require('sequelize'); var FilterModel = require('../models/filters'); var Filter = new FilterModel(Database, Sequelize); Filter.create({ name: data.filter_name }).then(function(filter) { console.log( '***************************************' ); }); 而'**'没有打印,但是input在DB中。 当我试图这样做: var filter = Filter.create({ name: data.filter_name }) 并打印“filter”我已经与created_at等新的实例,但ID为NULL。 该id定义为: id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, 请有人可以帮助这里有什么问题吗? 谢谢!

Sequelize如何插入更新多行?

我尝试用Sequelize在我的数据库中插入多行,但由于违反了一些约束,for循环卡住了。 let dataset = [ ["2016-01-01","987"], ["2016-01-02","987"], ["2016-01-03","987"], ["2016-01-04","987"], ["2016-01-05","987"], ["2016-01-06","987"], ["2016-01-07","987"], … ]; for(let row of dataset) { model.findOrCreate({ where: {date_prc: row[0]}, defaults: {value: row[1]} }); } 当我查看SQL日志时,它正在检查date是否已经插入,如果没有,它正在尝试插入该行。 但是,在某些情况下,而不是插入缺less的date行,它插入下一个date。 例如在我看到的日志中: select 2016-01-03 // this one is missing select 2016-01-04 // this one is not missing insert 2016-01-04 // it is inserting 2016-01-04 instead of […]

如何在没有加载关联对象的情况下通过关联查询sequelize?

我有多个模型相互关联。 例如: var User = sequelize.define("user") var Project = sequelize.define("project") Project.hasMany(User) 现在我想查询包含特定用户的所有项目。 例如: Project.findAll({ include: [ { model: User, where: { id } } ] }) 这工作,但也加载用户,并将其附加到项目。 我怎么能说sequelize,用户不应该被添加到find的项目?

在sequelize和pg之间共享数据库连接池

我有一个我用Express和node-postgres (pg)编写的服务器。 它创build自己的数据库池: const dbPool = new pg.Pool(dbConfig); 并使用此连接直接运行SQL查询。 现在我添加一个新表和相应的REST API。 我想用续集和结尾来减less样板。 不幸的是,sequelize想要创build自己的数据库连接池: const sequelize = new Sequelize(database, user, password, config); 是否有可能重新使用现有的连接池,或在我现有的pg代码和我的新的sequelize代码之间分享?

如何使用angular postgres和node在configuration文件中显示数据库中的用户信息? 我的代码不起作用

我不知道为什么我的代码不工作,并会很乐意提供一些帮助。 此外,似乎我的后端路线从来没有“打” – 所有用户路线的路线是API /用户,而不是击中API /用户/:ID它进入了API /用户..ANY帮助太赞赏了! node.js中的后端路由: router.get('/:id', function(req, res, next) { console.log('great', req.user.id) // check that user is current user or Admin if (!req.user.isAdmin && req.user.id != req.params.id) { res.status(403).send('Forbidden'); return } User.findById(req.params.id) .then(function(user) { res.send(user) }).catch(next) }) Angular factory: var baseUrl = '/api/users/'; var getData = res => res.data; UserFactory.fetchOne = function(id) […]

在sequelize.js中获得与belongsToMany的关联

我有一个用户和设备模型之间的多对多关系,通过UserDevice连接表: device.belongsToMany(user, { through: { model: userDevice }, foreignKey: "deviceId", as: "customers" }); user.belongsToMany(device, { through: { model: userDevice }, foreignKey: "customerId", as: "devices" }); setCustomers: Sequelize.BelongsToManySetAssociationsMixin<UserInstance, string, UserDeviceAttribute>; getCustomers: Sequelize.BelongsToManyGetAssociationsMixin<UserInstance>; 我可以通过以下方式正确find设备并填充客户: this.db.models.Device.findAll({ include: [{ model: User, as: "customers" }] 我不知道如何在其他情况下填充客户,即当我手动设置客户时。 现在我正在尝试类似于: return device.setCustomers(customers) .then(() => { return device.getCustomers(); }) .then((users) => { device.setAttributes("customers", users); […]

Sequelize – sequelize.sync()

我不明白它是如何工作的istruction sequelize.sync() 。 这是一个例子: 进入我的server.js文件: db.sequelize.sync().then(function() { app.listen(PORT); console.log("Express listen on port: " + PORT); }) 并进入我的db.js文件来创build一个新的数据库: //create a sequelize database for export it into server.js var Sequelize = require('sequelize'); var sequelize = new Sequelize(undefined, undefined, undefined, { 'dialect': 'sqlite', 'storage': __dirname + '/data/dev-todo-api.sqlite' // location where you create a new sqlite database }); var […]

在数据stream上两次返回数据包是约定吗? Sequelize

我正在尝试使用Sequelize获取特定表的标题。 这样做,我发现返回的RawDataPackets被返回两次。 这是stream发送数据包两次或更多次的约定吗? 如下所示,我给了标题两次。 如果是这样,我该如何处理? 我正在考虑使用_.chain.head.flatten.map.value但如果是约定,我想有一个更好的方法。 /* Returns an array of headers * @param {string} tableName * @param {function} next * @returns {Array} */ let getHeaders = function getHeaders(tableName, next) { let query = `SHOW COLUMNS FROM ${tableName}`; //TODO: change to spread db.sequelize.query(query) .then((results, metadata) => { console.log("flatten,",_.flatten(results)); }) .catch((err) => { console.error(err); }); }; […]

如何从Sequelize中的m:n关联表中删除所有寄存器?

我有两个模型与一个m:n关联通过一个表,我想删除这两个模型之间的所有关联。 要添加关联,我可以这样做: //just for example, imagine that a1, b1 and b2 are instances of models A and B //and they association are made through table AB a1.addB(b1); a1.addB(b2); // or a1.setB([b1,b2]); 现在我在表AB中有一个寄存器,将a1与b1相关联,另一个将a1与b2相关联。 我的问题是:如何删除表AB a1和B寄存器之间的所有关联? 我不想删除de a1寄存器,只是把它从B分离出来。 我尝试这样做: a1.set(); 但它尝试在表AB插入一个NULL值 更新:关于Sequelize有一个问题