如何从Firebase Cloud Functions中的本地存储中获取阵列?

时间:2018-12-10 23:17:55

标签: javascript jquery arrays firebase google-cloud-functions

将localStorage发送到服务器后,const arrayOrders即使在客户端包含值,也显示为空。

我已经尝试通过这种方式来做到这一点,但是它不起作用。

这是我来自服务器端和客户端的代码,用于处理请求。

怎么了?

在服务器端:

exports.wip = functions.https.onRequest((req, res) => {
  cors(req, res, () => {
    const url = `${req.protocol}://${req.get('host')}/work-in-process`;
    const tokenId = req.get('Authorization').split('Bearer ')[1];
    const arrayOrders = req.headers['service']; // {}
    const wipReq = JSON.stringify({
        operator: req.body.uid,
        conditions: req.body.status,
        service_list: {
            orders: [arrayOrders]
        }
    })
    return admin.auth().verifyIdToken(tokenId)
      .then((decoded) => {res.redirect(302, url.href)})
      .catch((err) => res.status(401).send(err));
  });
});

在客户端:

$(function() {
    'a long time ago user recorded a' localStorage.setItem("service_array", array);
    $('.SubForm').on('submit', function(e) {
        $.ajax({
          type: 'post',
          url: 'http://localhost:3000/wip',
          data: $(this).serialize(),
          success: function(data) {
            if (data.status) {
              $.ajax({
                type: 'get',
                url: 'http://localhost:3000/wip',
                beforeSend: function(xhr) {
                  xhr.setRequestHeader('service', localStorage.getItem("service_array"));
                },
                success: location.href = "http://localhost:3000/wip"
              })
            }
          }
        });
        e.preventDefault();
    });
});

1 个答案:

答案 0 :(得分:0)

  

存储对象是简单的键值存储,类似于对象,但是它们在页面加载时保持完整。 键和值始终是字符串(请注意,与对象一样,整数键将自动转换为字符串)。您可以像访问对象一样使用这些值,也可以使用Storage.getItem()Storage.setItem()方法。

发件人:https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API

因此,将数组存储在localStorage中可能会有不同的结果。我建议:

$(function() {
  var data = [];
  var storeData = JSON.stringify(data);
  localStorage.setItem("service_array", storeData);

  $('.SubForm').on('submit', function(e) {
    $.ajax({
      type: 'post',
      url: 'http://localhost:3000/wip',
      data: $(this).serialize(),
      success: function(data) {
        if (data.status) {
          $.ajax({
            type: 'get',
            url: 'http://localhost:3000/wip',
            beforeSend: function(xhr) {
              xhr.setRequestHeader('service', localStorage.getItem("service_array"));
            },
            success: function(){
              location.href = "http://localhost:3000/wip";
            }
          });
        }
      }
    });
    e.preventDefault();
  });
});

从您的示例中尚不清楚在何处定义array。基本上,您可以使用JSON.stringify()$.param()将Array数据转换为可以存储到localStorage的String。根据需要,可以在将String返回到数组中时将其转换。

希望有帮助。