为什么我的pg-query结果抛出一个TypeError

我正在创build一个节点函数来在PostgreSQL数据库中创build一个用户。 我使用node.jspgpg-query从应用程序到数据库进行通信。

在插入新logging之前我试图validation电子邮件地址不存在。

我不知道为什么我的result.rows[0].idTypeError: Cannot read property '0' of undefined error基于文档我使用正确的语法来访问我的查询结果。

这是function:

 /* POST create user */ router.post('/adduser', function(req, res) { var salt = crypto.randomBytes(16); var newHash = hash(req.body.password, salt); query.connectionParameters = connString; query('SELECT id FROM users WHERE email = $1',[req.body.email], function(err, result) { if (err){ console.log('Insert error: ' + err); } // If email exists, return error else insert new record if(result.rows[0].id != null) { query('INSERT INTO users (email, password, salt) VALUES ($1, $2, $3)', [req.body.email, newHash, salt], function(err, result) { if (err){ console.log('Insert error: ' + err); } res.send( ( err === null ) ? { msg: '' } : { msg:err } ); }); } else{ console.log(result); res.send({msg:'User already exists'}); } }); }); 

而我收到的错误如下:

 /home/robot/workspace/userapp/routes/users.js:35 if(result.rows[0].id != null) { ^ TypeError: Cannot read property '0' of undefined at /home/robot/workspace/userapp/routes/users.js:35:23 at Function.onSuccess (/home/robot/workspace/userapp/node_modules/pg-query/index.js:55:7) at null.callback (/home/robot/workspace/userapp/node_modules/pg-query/node_modules/okay/index.js:7:16) at Query.handleReadyForQuery (/home/robot/workspace/userapp/node_modules/pg/lib/query.js:80:10) at null.<anonymous> (/home/robot/workspace/userapp/node_modules/pg/lib/client.js:158:19) at emit (events.js:129:20) at Socket.<anonymous> (/home/robot/workspace/userapp/node_modules/pg/lib/connection.js:109:12) at Socket.emit (events.js:107:17) at readableAddChunk (_stream_readable.js:163:16) at Socket.Readable.push (_stream_readable.js:126:10) 

我是新来的javascriptnode所以它可能是非常明显的东西。 如果有帮助,这是pg-query文档 。

**解决scheme**

将条件更改为if(result[0].num == 0) {解决了问题。 pg-query显然不返回一个叫做rows的属性。

**解决scheme**

将条件更改为if(result[0].num == 0) {解决了问题。 pg-query显然不返回一个叫做行的属性。

它看起来像rows对象是undefined以表示没有给定电子邮件地址的用户。 你可以改变查询来select count(*) as num from users where email = $1 。 这将确保结果,并且可以testingresult.rows[0].num == 0