javascript - TypeError:无法读取未定义的属性“行”
问题描述
在您的 React 应用程序中遵循Postgres 入门时,在您处理和导出 getMerchants、createMerchant 和 deleteMerchant 函数时,我收到此错误 - TypeError: Cannot read property 'rows' of undefined, what is going on这里??这可能是我想念的非常小的东西。getMerchants 和 resolve(results.rows) 出现错误
const Pool = require('pg').Pool
const pool = new Pool({
user: 'my_user',
host: 'localhost',
database: 'my_database',
password: 'root',
port: 5432,
});
const getMerchants = () => {
return new Promise(function(resolve, reject) {
pool.query('SELECT * FROM userIds ORDER BY id ASC', (error, results) => {
if (error) {
reject(error)
}
resolve(results.rows);
})
})
}
const createMerchant = (body) => {
return new Promise(function(resolve, reject) {
const { name, email } = body
pool.query('INSERT INTO userIds (name, email) VALUES ($1, $2) RETURNING *', [name, email], (error, results) => {
if (error) {
reject(error)
}
resolve(`A new merchant has been added added: ${results.rows[0]}`)
})
})
}
const deleteMerchant = () => {
return new Promise(function(resolve, reject) {
const id = parseInt(Request.params.id)
pool.query('DELETE FROM userIds WHERE id = $1', [id], (error, results) => {
if (error) {
reject(error)
}
resolve(`Merchant deleted with ID: ${id}`)
})
})
}
module.exports = {
getMerchants,
createMerchant,
deleteMerchant,
}
解决方案
根据我的评论:
查询的第二个参数是查询参数,而不是回调函数。传入
[]
,如果你没有参数。除此之外,您的代码看起来在很大程度上是多余的。您应该遵循库提供的正确异步模式,而不是重新创建所有那些无用的承诺......
const getMerchants = () => pool.query('SELECT * FROM userIds ORDER BY id ASC');
然后像这样使用它:
const {rows} = await getMerchants();
推荐阅读
- javascript - 在 JavaScript 中缩小 URL
- android - 如何在android中为动态表格布局行应用搜索过滤器
- sql - 无法在 phpMyAdmin 上添加帐户/没有管理用户的权限
- html - 带有 {bslib} 包的 R Shiny 1.6:移动设备上的导航栏样式 - Bootstrap 4 与 Bootstrap 3
- javascript - 如何在 Angular 应用程序的 html 块中查看脚本函数值?
- api - 在颤振中用双引号传递参数值 -
- spring-boot - Jackson - 从嵌套元素开始
- angular - p-columnFilter 不是已知元素
- android - 在 Android 中创建注释常量以用作函数返回类型,类似于 Google Play Billing
- r - 在 R 中,如何根据分类变量的数量删除行?