【问题标题】:Query in firebase https function not working在firebase https函数中查询不起作用
【发布时间】:2017-10-28 20:55:40
【问题描述】:

我正在尝试在 firebase https 函数中运行对实时数据库的查询,但它不起作用。这是我的代码

exports.fetchPost = functions.https.onRequest((req, res) => {
  if (req.method === 'PUT' || req.method === 'GET') {
    res.status(403).send('Forbidden!')
  }
   let postId = JSON.stringify(req.query.postId) || 
   JSON.stringify(req.body.postId)
   cors(req, res, () => {
    admin.database().ref('items')
         .child(postId)
         .once('value', s => {
           console.log(s.val(), s)
           res.status(200).send(s.val())
         })
        .catch(e => res.status(500).send(e))
  })
})

我检查了日志。 s.val() 返回 null,而 s 给出一个不可用的 firebase 对象。

另外,我收到的请求返回如下

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:
    admin.database().ref('items')
       .once('value', data => data.forEach(s => {
           s.key === postId ? console.log('success!') : console.log('not 
           found');
        }))
    

    试试这部分代码,它只使用 firebase 处理。在这里测试过,可以用,如果不行,能否请教一下你的物品是怎么存放的?

    【讨论】:

    • 好的,试试这个,谢谢回复。我还是 firebase 的新手,使用 Parse 服务器已经有一段时间了。我打算做的只是获得单个项目。
    • 测试过了,没用。和以前一样的错误。另外,您的代码中有一个错误,您没有指定三元运算符的 else 部分。所以我使用了 if 语句。
    • 是的,我完全忘记了那里的其他部分,我已经将答案编辑得更清楚,希望对您有所帮助。
    • 非常感谢。这行得通,您刚刚为我节省了两次访问服务器的时间。我想进一步优化,如果我只想检索那条记录,有什么建议吗?
    • 很高兴您能解决您的问题。不幸的是,作为参数传递给 ON 或 ONCE 方法的读取事件“值”返回您指定的本地的所有数据,包括所有子数据。在 Firebase 的数据库等非 sql 数据库上,您需要对如何构建数据进行不同的思考,以防止检索大量数据。我向你推荐 Firebase 的 Youtube 频道:youtube.com/results?search_query=firebase 来帮助你,那里有很棒的最新教程。
    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 2020-06-06
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    相关资源
    最近更新 更多