【问题标题】:How to create a barcode for each items in an array in Node.js?如何为 Node.js 中数组中的每个项目创建条形码?
【发布时间】:2020-09-16 00:26:11
【问题描述】:

我正在尝试为 Node.js 中的数组中的每个项目创建一个条形码,但由于 bwip-js(这是我正在使用的实现,因为我的函数托管在 AWS Lambda 中)只有一个异步方法toBuffer(),我不知道如何才能完成我的要求。

这是我的代码:

const bwipjs = require('bwip-js');
const test = () => {
    let items = [
        {
            name: "Item1",
            barcode: "8590345627"
        },
        {
            name: "Item2",
            barcode: "6812430976"
        },
        {
            name: "Item3",
            barcode: "5098453726"
        }
    ];
    for(let item of items){
        bwipjs.toBuffer({
            bcid: 'code128',
            text: item.barcode,
            scale: 3,
            height: 10,
            includetext: true,
            textxalign: 'center'
        }).then(buffer => {
            let barcodeBase64 = `data:image/gif;base64,${buffer.toString('base64')}`
            item.barcodeImage = barcodeBase64;
        }).catch(error=>{
            console.log("Error" + error);
        });
    }
    console.log(items);
};
test();

但我只得到这个:

如果有人可以帮助我以正确的方法完成我的要求,我将不胜感激。

提前谢谢你。

【问题讨论】:

    标签: javascript node.js arrays barcode


    【解决方案1】:

    试试await

    const test = async ()=> {
        // .... blah blah
        for(let item of items){
           const buffer = await bwipjs.toBuffer(/* ... */)
           const barcodeBase64 = `data:image/gif;base64,${buffer.toString('base64')}`
           item.barcodeImage = barcodeBase64;
        }
    }
    

    【讨论】:

    • 谢谢,这真的很有帮助。我只需要调整我的 Lambda 函数,因为它目前是非异步的,所以我将不得不将它变成一个异步函数,否则,我将无法调用“测试”函数。问候!
    猜你喜欢
    • 2014-05-19
    • 2020-05-11
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2018-08-05
    • 2019-02-15
    • 2014-09-30
    相关资源
    最近更新 更多