- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上面显示的是我的 firestore 收藏。
我正在尝试使用我已部署的 Google Cloud Function 从此集合中获取数据:
const admin = require('firebase-admin')
const functions = require('firebase-functions')
module.exports= function(request, response){
let results = []
admin.firestore().collection('news_stories')
.get()
.then(docs => docs.map(doc => results.push(doc.data())))
.catch(e => resoponse.status(400).send(e))
response.status(200).send(results)
}
当我运行上述函数时,我得到一个:
Error: could not handle the request
我也尝试以这种方式运行该函数,看看它是否有效。
module.exports= function(request, response){
let ref = admin.firestore().collection('news_stories')
.get()
.then(docs => response.status(200).send(docs))
.catch(e => resoponse.status(400).send(e))
}
该函数返回一个 this JSON 对象:
没有有关数据或任何文档的信息。
我使用此函数将集合上传到 firestore 数据库:
const functions = require('firebase-functions')
const admin = require('firebase-admin')
module.exports = function(request,response){
if(!request.body.data){
response.status(422).send({error: 'missing data'})
}
let data = request.body.data
data.map(item => {
admin.firestore().collection('news_stories').add({item})
})
response.status(200).send('success!')
}
不知道我做错了什么。为什么该函数不返回任何文档?
最佳答案
从 Firestore 异步检索数据。当您将响应发送回调用者时,尚未从 Firestore 检索结果。
最容易看到这一点的方法是用三个日志语句替换大部分代码:
console.log("Before starting get");
admin.firestore().collection('news_stories')
.get()
.then(() => {
console.log("In then()");
});
console.log("After starting get");
最好在常规 Node.js 命令中运行上述命令,而不是在 Cloud Functions 环境中,因为后者实际上可能会在加载数据之前终止该命令。
上面的输出是:
Before starting get
After starting get
In then()
这可能不是您期望的顺序。但由于数据是从 Firestore 异步加载的,因此回调函数之后的代码可以立即继续。然后,当数据从 Firestore 返回时,您的回调将被调用,并且可以根据需要使用数据。
解决方案是将所有需要数据的代码移至 then()
处理程序:
const admin = require('firebase-admin')
const functions = require('firebase-functions')
module.exports= function(request, response){
admin.firestore().collection('news_stories')
.get()
.then(docs => {
let results = []
docs.map(doc => results.push(doc.data()))
response.status(200).send(results)
})
.catch(e => resoponse.status(400).send(e))
}
关于javascript - Firestore 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47493186/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!