Javascript';编号';和博士后类型

Javascript';编号';和博士后类型,javascript,node.js,postgresql,Javascript,Node.js,Postgresql,我通过pg包将postgres与node.js一起使用,我只是刚刚开始,所以我的目标是一个非常简单的表格,如下所示,通过命令在psqlshell中创建 CREATE TABLE people(id int, name text); Column | Type | Modifiers ------------+---------+----------- id | int | name | text | 节点文件的相关部分如下所示。我所要做的就是得到当

我通过
pg
包将postgres与node.js一起使用,我只是刚刚开始,所以我的目标是一个非常简单的表格,如下所示,通过命令在
psql
shell中创建

CREATE TABLE people(id int, name text);

Column   |  Type   | Modifiers
------------+---------+-----------
    id   | int     |
    name | text    |
节点文件的相关部分如下所示。我所要做的就是得到当前人数的一个计数(这很好),将其递增
1
,并使用这个新值作为我添加到表中的下一个人的
id

pg.connect(conString, function(err, client) {
  var count;
  var next;

  client.query('SELECT COUNT(*) FROM people', function(err, result) {
    count = result.rows[0].count;
    next = Number(count)+1;
  });

  client.query('INSERT INTO people (id, name) VALUES ($1, $2)', [next, req.body.personName],function(err, result) {
  });
});
req.body.personName
正在
express
应用程序的其他地方设置,该部分没有问题,名称可以很好地存储在postgres中,但
id
列仍然为空

我有

  • 在postgres中创建字段时,尝试了
    numeric
    int
    两种类型,但没有任何区别
  • 假设问题是postgres中定义的类型与javascript中更松散的定义之间的不兼容,我尝试转换类型
    值($1::int,$2)
    ,同样没有效果
  • 我认为
    [node pg types][1]
    项目可能是一个解决方案,但据我所知,它不是(我很可能是错的)
  • 如果我用
    1
    '1'
    (或任何其他数字/字符串)替换
    client.query
    调用中的
    next
    变量,则
    1
    将作为id显示在postgres中

看起来您同时在做两件事(异步)。在查询完成后(在回调中)尝试插入:


看起来您同时在做两件事(异步)。在查询完成后(在回调中)尝试插入:


好的,
console.log(result.rows[0].count)
给出了
0
(表为空,所以正确),但它的类型是
string
。不确定您对
别名的建议是什么意思?您能展开吗?好的,
console.log(result.rows[0].count)
给出了
0
(表为空,所以正确),但它的类型是
string
。不确定您对
别名的建议是什么意思?你能扩展一下吗?工作很有魅力,谢谢!我觉得自己是个白痴,我错过了!工作很有魅力,谢谢!我觉得自己是个白痴,我错过了!
pg.connect(conString, function(err, client) {
  var count;
  var next;

  client.query('SELECT COUNT(*) FROM people', function(err, result) {
    count = result.rows[0].count;
    next = Number(count)+1;
    client.query('INSERT INTO people (id, name) VALUES ($1, $2)', [next,              
       req.body.personName],function(err, result) {
    });
  });


});