async-await - Cloud firestore 和 nextjs - getInitialProps 和异步数据
问题描述
我试图使用 nextjs 的 getInitialProps 方法检索文档。然而,它返回一个状态为“待定”的 Promise。这是我的代码:
static async getInitialProps(context) {
const { id } = context.query;
await db
.collection('clients')
.doc('JJqyDI8a1ILqnqmp2gcO')
.get()
.then(doc => ({
data: doc.data(),
}));
console.log(data); // logs pending
return {
client: data,
};
}
我似乎也找不到任何例子。
解决方案
所有异步函数都返回一个承诺。
我看不到您是如何访问的data
,因为当您使用 console.log 时,它已经超出了范围。
做这样的事情:
static async getInitialProps(context) {
const { id } = context.query;
const data = await db
.collection('clients')
.doc('JJqyDI8a1ILqnqmp2gcO')
.get()
.then(doc => ({
...doc.data(),
}));
return {
client: data,
};
}
这应该可以通过props.client
推荐阅读
- mongodb - Mongo DB 中文档模式的一致性
- android - 我应该以不同于处理深层链接的方式处理 Firebase 动态链接吗?
- c# - 当 startet 退出事件时,在 C# 中启动 sqlcmd 进程不起作用
- c# - 带参数的属性路由不工作:没有参数工作
- emacs - 配置公共部分的路径
- firebase - 如何找出发生了哪些收集权限错误
- c# - 在 EF Core 中使用基类的导航属性
- powershell - 具有存储凭据的启动进程 PowerShell 不起作用
- reactjs - 在样式化组件中使用道具时效果很好,但会显示警告(警告:非布尔属性 `cen` 收到 `true`)
- python - 将日志图限制设置为下一个最低/最高十年