Firebase:创建FIFO库存以获取价值

编程入门 行业动态 更新时间:2024-10-15 04:24:30

Firebase:创建FIFO<a href=https://www.elefans.com/category/jswz/34/1762884.html style=库存以获取价值"/>

Firebase:创建FIFO库存以获取价值

我已经被这个问题困扰了一个月。

我一直在尝试使用Firebase创建FIFO库存。我正在使用Firebase云功能更新FIFO库存。但是,如果我对插入(推)和移除(弹出)的for循环仅用for循环进行10次压力测试,则由于并发更新而中断。

有人对此有其他解决方案吗?

插入FIFO / PUSH:

let fifoRef = admin.database().ref('fifo/' + item.itemId + '/').push();
let fifo = {
    price: data.items[uniqueId].price,
    in: data.items[uniqueId].quantity,
    quantity: data.items[uniqueId].quantity,
}
fifoRef.set(fifo);

获取FIFO值/ POP(这里我只是更新POP的数量):

// get fifo
let fifoReference = 'fifo/' + item.itemId;
let fifoRef = admin.database().ref(fifoReference);
fifoRef.once('value').then(currentData => {
  let fifo = currentData.val();

  for (let key in fifo) {
    let val = fifo[key];

    if (val.quantity > 0) {
    // get fifo quantity
    let fifoQuantityRef = admin.database().ref(fifoReference + '/' + key + '/quantity/');

    // get local cache value
    let fifoQuantityListener = fifoQuantityRef.on('value', () => {                                      
      // transaction start
      fifoQuantityRef.transaction(function (quantity) {
        if (quantity) {
          if (quantity > 0 && quantitySubtotal > 0) {

            if (quantity >= quantitySubtotal) {
              // minus inventory amount
              let amount = calculator(quantitySubtotal + "*" + val.price);

              quantity = calculator(quantity + "-" + quantitySubtotal);
              quantitySubtotal = 0;

              // update quantity
              return quantity;
            } else {
              let amount = calculator(quantity + "*" + val.price);

              quantitySubtotal = calculator(quantitySubtotal + "-" + quantity);
              return 0;
            }
          }
        }
        return quantity;
      }, (error, committed, result) => {
        fifoQuantityRef.off('value', fifoQuantityListener);
    }, true);
  });

集思广益:我只需要了解如何使用FIFO获取值。据我了解,Firebase最好用于不随事务插入和删除。但是,如果我仅使用插入和删除,如何创建FIFO?如果我创建数量为1的FIFO,则存储的数据将太大。

我曾尝试使用Google数据存储,但是数据存储的持久性非常慢(写入过程超过2秒)。持续时间少于1秒的Firebase无法使用该功能。当在1秒钟内完成PUSH和POP,但尚未持久存储数据存储区时,就会出现问题。

还有其他集思广益的想法吗?

我已经被这个问题困扰了一个月。我一直在尝试使用Firebase创建FIFO库存。我正在使用Firebase云功能更新FIFO库存。但是,如果我进行压力测试...

回答如下:

使用下面的链接查看是否可以解决:

更多推荐

Firebase:创建FIFO库存以获取价值

本文发布于:2024-05-07 08:11:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755323.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:库存   价值   Firebase   FIFO

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!