Tag: postgresql

将嵌套关系序列化,有多个“作者”的“post”?

我正在用Postgres学习Sequelize。 我怎样才能使“post”有多个作者? 我目前每个post只有一个作者。 我尝试使用Post.hasMany(Person)但我不知道如何填写下面的同步声明中的数据,因为我从教程中复制它…这是我第一次使用数据库。 import Sequelize from 'sequelize'; import _ from 'lodash'; import Faker from 'faker'; const Conn = new Sequelize( 'test_db', 'postgres', 'postgres', { dialect: 'postgres', host: 'localhost' } ); const Person = Conn.define('person', { firstName: { type: Sequelize.STRING, allowNull: false }, lastName: { type: Sequelize.STRING, allowNull: false } }); const Post = Conn.define('post', […]

在postgres jsonb数组中find对象的位置

我有一个在表的jsonb value列中看起来像这样的对象数组: "west": [ {"id": "aa92f346-7a93-4443-949b-4eab0badd983", "version": 1}, {"id": "cd92e346-6b04-3456-050a-5eeb0bddd027", "version": 3} ] 我打算从这个数组中删除某些对象的ID和版本,如下所示: SELECT value::jsonb #- '{west, 1}' FROM game.settings; 然而, 1不应该被硬编码,而是应该等于数组中匹配我所寻找的id和版本的对象的位置(在本例中为"id": "cd92e346-6b04-3456-050a-5eeb0bddd027", "version": 3 )。 我将如何去确定这个数组的位置,并将其传递到硬编码1当前拥有的位置?

node.js api保持代码干燥

我想知道,当用数据库调用开发node.js api时,保持代码干燥的最佳实践是什么。 我好像有很多重复的代码。 例如,看看这个: app.get('/api/users_count', function (req,res) { pool.connect(function(err, client, done) { if(err) { return console.error('error fetching client from pool', err); } client.query('SELECT count(*) FROM users;', function(err, result) { done(); if(err) { return console.error('error running query', err); } res.json({"users count": result.rows[0].count}); }); }); }); 和这个: app.get('/api/users/:id', function (req,res) { pool.connect(function(err, client, done) { if(err) { […]

Knex在插入后parsing空集

我试图在Node中使用Postgresql和Knex设置一个基本的数据库连接,但我很难得到一个简单的插入工作。 我将大部分代码放在Knex github库中的代码示例中。 这个问题似乎是我的第一个插入(我添加pipe理员用户)正在解决一个空的行集(不太确定,因为文档没有包含行或行集上的任何信息,只要我可以find)。 这是我的代码: const knex = require("knex")({ client: "postgres", connection: { host : "127.0.0.1", user : "postgres", password : "my password goes here", database : "issue-tracker", charset : "utf8" } }); knex.schema .dropTableIfExists("tickets") .dropTableIfExists("users") .createTable("users", createUserTable) .createTable("tickets", createTicketTable) .then(() => addTestData()) .then(() => console.log("Done")) .catch((e) => console.log(e)); function createUserTable(table) { table.increments("id"); table.string("username").index().unique(); table.string("password"); […]

与节点和PostgreSQL的同步查询

所有更新查询完成后,我想从box_property删除 我写这个代码,但我不知道这是正确的或不。我想运行更新查询同步 var data = [1, 2, 3, 4]; //data generate dynamicly for (var i = 0; i < BoxData.length; i++) { pool.connect(function(err, client, done) { client.query("update box set gamer_id=null where box_id=$1; ", [data[i]], function(err, resultUpdate) { if ((i + 1) == BoxData.length) { //when all query finished then run this query client.query("delete from box_property […]

Node.js:如何在Sequelize中使用Postgres存储过程?

我最近学习了这个强大的ORM的所有规格,如迁移表,定义模式,定义模型,关联,插入等。 我特别的问题是如何pipe理Postgres存储过程(SP)的续集? 我为我的服务器使用Node.js。

我使用Sequelize的数据库模型不做迁移

我有两个模型: user.js的 'use strict' module.exports = function(sequelize, DataTypes) { var User = sequelize.define('User', { gid: { type: DataTypes.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, email: { type: DataTypes.STRING, allowNull: false }, password: { type: DataTypes.STRING, allowNull: false }, newsletters: { type: 'NUMERIC', allowNull: false, defaultValue: '1' }, status: { type: 'NUMERIC', allowNull: false, defaultValue: […]

configuration狮身人面像排名精确匹配更高的形态启用

我有狮身人面像索引按名称search用户。 我正在使用soundex形态来显示更多的相关结果,案例search者并不完全知道名字拼写的方式。 考虑下表: +—-+——————–+ | id | name | +—-+——————–+ | 1 | Maciej Makuszewski | | 2 | Dane Massey | | 3 | Lionel Messi | | 4 | Mr. No Matches | +—-+——————–+ 随着soundex启用狮身人面像build议1,2,3行作为查询messi相关的结果。 无论如何,我想先显示确切的匹配。 我的意思是说,如果用户键messi他希望看到梅西第一个很有可能。 我的问题是我不知道该怎么做。 我试图设置不同的rankers,但它什么都不给。 我也尝试添加 index_exact_words = 1 索引但它没有提供任何东西。 如果它很重要,我使用sphinx API和node.js sphinxapi模块。 解决这个问题的常见方法是什么?

在pg-promise中跨多个控制器的多个查询之间共享事务或任务对象

我对node.js,postgresql,Promise和事实上的stackoverflow都比较陌生,所以如果事情听起来有些不协调的话,我会提前道歉的! 我目前正在尝试在各种控制器中分布的链式承诺内运行多个查询。 我想在同一个事务或任务中运行所有的查询,以消除多个连接和断开连接到数据库。 我已经尝试了以下方法,在这里添加一名学生并为该学生分配两名导师。 HTTP请求被路由到学生控制器,该控制器通过学生存储库添加学生。 学生存储库是任务启动的地方,并返回到控制器,该控制器将其转发给导师控制器,并沿着链路进入… @ HttpPost("/api/students/create") addStudent( @ Req()request) { var studentid; var mentorids= []; //Add the student return this.studentRepository.addStudent(request.body.student) .then(newStudentId => { studentid = newStudentId; //Add the mentors, passing the transaction object received back from studentRepository return this.mentorController.addMentor(request.body.schoolid, request.body.mentors, newStudentId.transaction) .then(result => { var data = []; console.log(result); for (var role in […]

Heroku h12超时错误PG / Node.js

我试图插入到我的数据库时,得到一个讨厌的h12(超时错误)。 2017-01-25T00:22:24.764591+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/api" host=kujaflow.herokuapp.com request_id=fb69dfdf-12ef-4dc8-8feb-45bef0c26746 fwd="71.125.214.77" dyno=web.1 connect=0ms service=30005ms status=503 bytes=0 我不知道为什么会这样。 我的节点代码看起来不错,从我收集。 我编辑了用户/传递信息…. var express = require('express'); var pg = require('pg'); var dbuser = 'xxxxxxxxx'; var dbpassword = 'xxxxxxxxx'; var dbname = 'xxxxxxxxx'; var dbhost = 'xxxxxxxxx'; var dbport = 5432; var dbconnect = { user: dbuser, password: […]