我正在试图找出为什么我无法从postgres数据库中检索数据。
当我使用async await时,它可以工作,但是当我尝试使用Promise和.then(result).catch(error)时,它就不工作了。
控制台日志显示Promise { <pending> }
获取用户
your text`const db = require("../config/db");
const getUsers = () => {
const query = "SELECT * FROM users";
const users = db
.query(query)
.then((result) => {
return result.rows;
})
.catch((error) => {
return error.message;
});
return users;
};
module.exports = {
getUsers,
};
index.js(使用承诺)--不起作用。
const { getUsers } = require('../helpers/users')
export default function Home(props) {
return (
<ul>
{props.name}
{props.users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
)
}
export function getServerSideProps(context) {
const users = getUsers()
.then((result) => {
return result.rows;
})
.catch((error) => {
return error.message;
})
return {
props: {
users
}
}
}
index.js(使用异步/等待)--工作正常。
export async function getServerSideProps(context) {
const users = await getUsers()
return {
props: {
users
}
}
}
2条答案
按热度按时间o8x7eapl1#
这应该工作(根据下一个文档getServerSideProps是异步函数)。所以只需要添加async关键字并从该函数返回承诺:
ajsxfq5m2#
谢谢你们Andrey和Bergi。
因为它是Promise,所以我不必包含异步,但是其余的代码确实工作了!