Tag: sequelize.js

如何使用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有一个问题

sequelizejs:findAll并同时计算关联

说我有两个模型: Post和Comment ,现在我可以使用Post.findAll()获得所有职位,但我也需要每个职位的评论计数,我可以做一个循环,并使用post.countComments()获得计数,但是有可能在一个查询中做到这一点? 谢谢

如何处理富域模型的持久性

我正在重新devise我的NodeJS应用程序,因为我想使用Rich Domain Model概念。 目前我正在使用贫血域模型,这不是扩展好..我只是看到'如果'无处不在大声笑。 我已经阅读了一堆博客post和DDD相关的博客,但有一些我根本无法理解…我们如何正确处理持久性。 首先,我想描述我已经定义的图层和目的: 持久性模型 定义表模型。 定义表名,列,键和关系 我使用Sequelize作为ORM,所以用Sequelize定义的模型被认为是我的持久性模型 领域模型 实体和行为。 与作为业务域一部分创build的抽象相对应的对象 我已经创build了几个类,这里​​最好的事情是,我可以从层次结构中获益,解决所有问题(没有ifs的负载)。 数据访问对象(DAO) 负责数据pipe理,并将持久性模型条目转换为域模型的实体。 所有与持久相关的活动都属于这一层 就我而言,DAO在持久性模型上创build的Sequelize模型上工作,但是,我正在序列化基于数据库交互的不同对象的数据库交互的属性。 例如:如果我有一个名为'UserType'的列包含两个值[ADMIN,USER]的表,当我select这个表上的条目时,我会根据用户types序列化返回,所以一个用户types: ADMIN将是AdminUser类的一个实例,其中types为USER的用户将只是一个DefaultUser … 服务层 负责所有通用业务逻辑,例如不属于任何域对象行为的实用程序和其他服务 客户端层 任何使用对象的消费者类,负责触发持久性 现在,当我实现客户端层时,混乱开始了… 比方说,我正在实施一个新的REST API: POST: …/api/CreateOrderForUser/ { items: [{ productId: 1, quantity: 4 },{ productId: 3, quantity: 2 }] } 在我的处理函数,我会有这样的事情: function(oReq){ var oRequestBody = oReq.body; var oCurrentUser = oReq.user; //This […]

Sequelize WHERE sequelize.fn(…)和东西='东西'订购问题

我有一个Sequelize findOne函数,它可以select一个给定点与一个多边形(col'geom')AND状态='active'相交的行。 var point = sequelize.fn('ST_GeomFromText', 'POINT(' + lng + ' ' + lat +')', 4326); var intersects = sequelize.fn('ST_Intersects', sequelize.col('geom'), point); GeoCounty.findOne({ attributes: ['id', 'name' ], where: { status: 'active', $and: intersects }, plain: true }) 截至目前,它工作得很好。 它生成的SQL如下所示: SELECT "id", "name" FROM "geocounty" AS "geocounty" WHERE "geocounty"."status" = 'active' AND (ST_Intersects("geom", ST_GeomFromText('POINT(-98.025006 43.714735)', 4326))) […]

Sequelize js添加相关模型的总数

我试图修改一个查询,所以它也返回一个元素的数量,我想要统计与“出版物”有关的“出版物评论”的数量。 现在查询看起来像这样: let query = { attributes: { exclude: attributesToExclude, }, where: { 'club_id': this.id, }, order: [['date', 'DESC']], include: [ { model: models.PublicationComment, association: models.Publication.hasMany(models.PublicationComment, { as: 'lastComments' }), order: [['date', 'DESC']], limit: 3, include: [ { model: models.User, as: 'user', attributes: { exclude: attributesToExclude, }, } ], }, { model: models.PublicationLike, association: models.Publication.hasMany(models.PublicationLike, […]

节点,Heroku,应用程序错误,connect.session()MemoryStore不适用于生产环境

当我尝试部署到Heroku时,我的应用程序崩溃,我正在使用节点。 我认为问题是连接到数据库与Sequelize。 错误代码= H10 我认为这是和这里一样的问题: https : //github.com/ga-wdi-exercises/project3/issues/127 Heroku日志: 2017-04-24T07:42:40.134863+00:00 app[web.1]: Warning: connect.session() MemoryStore is not 2017-04-24T07:42:40.134878+00:00 app[web.1]: designed for a production environment, as it will leak 2017-04-24T07:42:40.134878+00:00 app[web.1]: memory, and will not scale past a single process. 2017-04-24T07:42:40.221903+00:00 app[web.1]: at Handshake._callback (/app/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:80:20) 2017-04-24T07:42:40.221904+00:00 app[web.1]: at Protocol.handleNetworkError (/app/node_modules/mysql/lib/protocol/Protocol.js:364:14) 2017-04-24T07:42:40.221906+00:00 app[web.1]: at emitOne (events.js:96:13) 2017-04-24T07:42:40.221907+00:00 app[web.1]: […]