Articles of sequelize.js

GraphiQL返回nil变异

我使用Seqelize GraphQL,我有一个返回null的变异。 我试过用不同的几种方法来改变这个变种的parsing器,但是当我用GraphiQL来testing的时候它总是返回null。 下面是用几种不同的方式写的parsing器: 1 – 最初,我有想法添加包装function的承诺。 resolve(root, args) { return new Promise((resolve, reject) => { db.record.findOne({ where: { UID: args.UID } }) .then(record => { let newArr = undefined if (record.watched == null) { newArr = [args.value] } else { let old = record.watched newArr = old.concat([args.value]) } db.record.update({ watched: newArr }, { where: […]

Sequelize,用于在belongsToMany关联的连接模型上进行过滤的问题

Sequelize文档build议您可以在选项对象上使用以下参数来过滤连接表属性上的查询: [options.include[].through.where] 我试图在下面的代码中使用这个公式,发现过滤不起作用。 模型用户和模型networking通过连接表networking附属关联,其具有附加属性(布尔)“确认”。 我似乎无法写一个查询,只返回与用户相关的确认networking。 我的代码摘录如下。 const network_affiliations = db.define('network_affiliations', { networkEmail: { type: Sequelize.STRING }, confirmed: { type: Sequelize.BOOLEAN } }, { freezeTableName: true, defaultScope: { where: { confirmed: true } }, }); // User belongs to many Networks and Networks belong to many Users (join table) User.belongsToMany(Network, { through: network_affiliations }); Network.belongsToMany(User, { […]

包括在内的使用顺序包括在内

Discussion.findAll({ where : { discussion_on : profileId, is_deleted : false , is_reply : false }, limit : 5, order : [['updated_at','DESC']], offset:5*(page-1), // order : [['updated_at','DESC']], include:[{ model : Profile, as : 'CommentBy', attributes:staticData.USER_LAYOUT, include : [{ model : TeamMember, as : "TeamSender", required : false, attributes : ['receiver', 'title'], where : sequelize.where(sequelize.col('receiver'),db.sequelize.col('discussion.comment_entity')) },{ model […]

Node.js中的模型文件不会考虑configuration

我有这样的模型文件,如下所示: 'use strict' module.exports = function (sequelize, DataTypes) { let User = sequelize.define('user', { id: { type: DataTypes.INTEGER(11), allowNull: false, primaryKey: true, autoIncrement: true } }, { classMethods: { associate: function(models) { this.belongsToMany(models.role, { through: { model: 'user_role' }, foreignKey: 'user_id' }) } } }, { tableName: 'user', timestamps: false, underscored: true } ) return […]

Sequelize findOne错误:TypeError indexOf undefined

第一次使用一个新的数据库使用sequelize,通过cli完成表创build和迁移(我们有一个传统的数据库模式使用它,没有问题与模型构build匹配现有的表,所以我熟悉的基本用法) 。 当我试图testing一个新的表中的一个查询时,我得到一个typeerror。 系统:Sequelize v4.5.0,Node v8.1.4,npm v5.3.0 首先Stacktrace: TypeError: Cannot read property 'indexOf' of undefined at attributes.map.attr (**PATH**/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1222:27) at Array.map (native) at Object.escapeAttributes (**PATH**/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1207:37) at Object.selectQuery (**PATH**/node_modules/sequelize/lib/dialects/abstract/query-generator.js:979:28) at QueryInterface.select (**PATH**/node_modules/sequelize/lib/query-interface.js:672:27) at Promise.try.then.then.then (**PATH**/node_modules/sequelize/lib/model.js:1539:34) at tryCatcher (**PATH**/node_modules/bluebird/js/release/util.js:16:23) at Promise._settlePromiseFromHandler (**PATH**/node_modules/bluebird/js/release/promise.js:512:31) at Promise._settlePromise (**PATH**/node_modules/bluebird/js/release/promise.js:569:18) at Promise._settlePromise0 (**PATH**/node_modules/bluebird/js/release/promise.js:614:10) at Promise._settlePromises (**PATH**/node_modules/bluebird/js/release/promise.js:693:18) at Async._drainQueue (**PATH**/node_modules/bluebird/js/release/async.js:133:16) at Async._drainQueues (**PATH**/node_modules/bluebird/js/release/async.js:143:10) at […]

围绕循环依赖工作

我尝试了第一次sequelize ,我有一点麻烦让我的数据库模型的工作。 sequelize.sync()失败, Error: Circular Dependency Instruction -> Result => Instruction 这是有道理的,因为我的模型是循环的: const Instruction = db.define('instruction', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true, }, /* more keys here */ }); //each instruction results in one or more results const Result = db.define('result', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, […]

Sequelize TypeError:phone.setUser不是一个函数

我有点失落,并会感谢任何帮助。 我通过我的userPhones表在我的用户表和电话表之间build立了一个M:M关联。 user.js的 module.exports = (sequelize, DataTypes) => { const Users = sequelize.define('Users', { givenName: { type: DataTypes.STRING }, sn: { type: DataTypes.STRING }, mail: { type: DataTypes.STRING }, title: { type: DataTypes.STRING }, department: { type: DataTypes.STRING }, sAMAccountName: { type: DataTypes.STRING, primaryKey: true }, displayName: { type: DataTypes.STRING }, }, { freezeTableName: true, […]

与SQL服务器一起发生事务隔离级别问题

我们有一个具有Sequelize事务的函数。 在事务中,它检查数据库表行上的字段,并基于该字段返回或继续更新各种数据库表。 例如 let buyingStatus = await models.buyingFood.findOne({ where: { id: 21 }, transaction: t}); if (buyingStatus.status == 'bought') return 'already bought' 如果继续,它会更新多个地方,只有在状态不被bought时才更新,最后将状态更改为bought 。 问题是当函数被同时调用两次时。 瓶颈是select语句后发生的更新。 所以两个人可以通过没有买的购买状态,然后更新bought状态,以及所有其他更新。 不是SQL的专家,我们研究发现,locking表或更改隔离级别可以解决这个问题。 但是,我们都执行并没有帮助。 见下文 1)改变隔离级别 let t = await models.sequelize.transaction(isolationLevel: Sequelize.Transaction.ISOLATION_LEVELS.SERIALIZABLE); 2)在查找上设置locking let buyingStatus = await models.buyingFood.findOne({ where: { id: 21 }, transaction: t, lock: t.LOCK.UPDATE }); 我们想要的是从未提交的交易中读取,所以如果人A已经改变了他之前的bought状态

续集“unique:true”使用不同的键名两次生成相同的唯一键

Test1:在电子邮件属性中添加“unique:true”。 Test2:在电子邮件属性中添加“unique:{args:true,msg:”xxxxxx“}”。 使用Sequelize:4.7.5和MySQL:5.7.19 我期待这两个testing用例都会有一个索引。 但是我得到了Test1的两个索引 。 两个索引具有相同的列但不同的键名 。 这是一个错误还是我做错了什么? 尝试下面的模型defs。 Test1 = { id: { type: Sequelize.INTEGER.UNSIGNED, primaryKey: true, autoIncrement: true }, emailId: { type: Sequelize.STRING, unique: true, allowNull: false, validate: { isEmail: { args: true, msg: 'Invalid email id.' } } } } Test2 = { id: { type: Sequelize.INTEGER.UNSIGNED, primaryKey: true, autoIncrement: true […]

如何处理从POST(NodeJs / Sequelize / Express)收到的数据

我想用express和Sequelize把用户注册到MySQL数据库中。 首先,我应该确保我的客户端(AngularJS)将数据发布到我的routes.js(req.body包含我的数据)文件中: var bodyParser = require('body-parser'); var passport = require('passport'); var session = require('express-session'); module.exports = function (app) { //BodyParser app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); //Passport app.use(session({ secret: 'keyboard cat', resave: true, saveUninitialized: true })); app.use(passport.initialize()); app.use(passport.session()); // persistent login sessions app.post('/registered', function (req, res) { console.log(req.body); res.end(); }); } 接下来,我创build了一个Sequelize用户模型: module.exports = function (sequelize, […]