【问题标题】:returning firebase array returns tuple instead of array返回firebase数组返回元组而不是数组
【发布时间】:2018-04-10 13:13:56
【问题描述】:

我正在从 firebase 实时数据库中查询,将每个结果存储在一个数组中,然后返回这个数组。虽然数据是正确的,但我并没有以我想要的类型返回它。

这个函数的代码是

exports.getprojects = functions.https.onRequest((req, res) => {
  const uid = req.body.uid;
  var projectref = fref.child('projects');
  var projarr = [];

  // Make the promise object for query
  const projpromise = projectref.orderByChild('key').equalTo(uid).once('value');
  // Another Promise for pushing to array
  const pushpromise = projpromise.then(snap => {
    var proj_item = snap.val();

    // push to array
    projarr.push(proj_item);
    return proj_item;
  }).catch(reason => {
    console.log(reason)
    return res.json(400);
  })

  // Respond with array
  return pushpromise.then((proj_item) => {
    return res.json(200, projarr);
  }).catch(reason => {
    console.log(reason)
    return res.json(400);
  })
});

此函数查询所有正确的数据,但返回格式如下:

[
   {
    "project_id": {
        "project_title": "Test Project1",
        "project_type": "Long Term"
    },

    ... 
]

我需要这个函数以如下格式返回:

{
   {
    "project_id": {
        "project_title": "Test Project1",
        "project_type": "Long Term"
   },

    ...
}

我怎样才能做到这一点?任何帮助表示赞赏。谢谢!

【问题讨论】:

  • 最后一个 sn-p 不是有效的 JSON,所以不可能在 JavaScript 代码中构造它。

标签: javascript arrays firebase firebase-realtime-database javascript-objects


【解决方案1】:

要将您的数组转换为仅包含键值对的 JSON 对象,请执行以下操作:

var array = [
    {"project_id": {
        "project_title": "Test Project1",
        "project_type": "Long Term"
    }},
    {"project_id2": {
        "project_title": "Test Project2",
        "project_type": "Medium Term"
    }},
    {"project_id3": {
        "project_title": "Test Project3",
        "project_type": "Short Term"
    }}
];

var result = {};

array.forEach(function(object) { 
  var key = Object.keys(object)[0];
  result[key] = object[key];
})

console.log(result);

【讨论】:

  • 非常感谢您的帮助!如果我可能会问,JSON 对象数组和带有简单键值对的 JSON 有什么区别?当我使用 typeof 记录两者时,我都会得到两者的对象。
猜你喜欢
  • 1970-01-01
  • 2016-08-20
  • 2015-06-23
  • 1970-01-01
  • 2017-07-11
  • 2020-07-15
  • 2013-05-16
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多