【问题标题】:Appending chunked data to a variable gives an unexpected result将分块数据附加到变量会产生意想不到的结果
【发布时间】:2020-04-19 19:30:45
【问题描述】:

我正在尝试将来自 minio 文件的 JSON 对象添加到 MongoDB

但是数据就像undefined[{"field":"value"}]

这是我的代码:

var miniData
minioClient.getObject(fileData.type,fileData.userId+fileData.fileName,function(err,exData) {
    exData.on('data', async function (chunck) {               
        miniData += chunck;
    });
    exData.on('end',async function () {
        console.log(miniData)
        excelDb.create({ excelArray:miniData}) 
    });
});

在 MongoDB 文档中存储为:

{
    "_id" : ObjectId("5e0b02b9775cee50051b2547"),
    "excelArray" : "undefined[{\"FIELD\":\"VALUE\"}
}

我想要一个 JSON 数组在我的文档中。

【问题讨论】:

  • 粘贴错误。 “数据就像未定义”没有任何意义!
  • 其实没有错误,只是我不喜欢这个结果,无法使用
  • 然后把响应写成它应该的样子!

标签: node.js json undefined stringify minio


【解决方案1】:

miniData 一个初始值。如果你不这样做,它会隐式地将undefinedundefined 加上字符串使undefined to bo 转换为一个单词。请参阅下面的示例。

不初始化变量:

var miniData;

miniData += 'a string';

console.log(miniData);

带有初始值:

var miniData = '';

miniData += 'a string';

console.log(miniData);

所以在你的代码中应该是这样的:

var miniData = ''; // initialize the variable with an empty string
minioClient.getObject(fileData.type,fileData.userId+fileData.fileName,function(err,exData) {
    exData.on('data', async function (chunck) {               
            miniData += chunck;
    });
    exData.on('end',async function () {
        console.log(miniData)
        excelDb.create({ excelArray:miniData}) 
    });
});

如果你想在MongoDB文档中有一个实际的数组,你需要在插入之前JSON.parseminiData,所以final解决方案应该是这样的:

var miniData = ''; // initialize the variable with an empty string
minioClient.getObject(fileData.type,fileData.userId+fileData.fileName,function(err,exData) {
    exData.on('data', async function (chunck) {               
            miniData += chunck;
    });
    exData.on('end',async function () {
        console.log(miniData)
        excelDb.create({ excelArray: JSON.parse(miniData)}) 
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2019-04-05
    • 1970-01-01
    相关资源
    最近更新 更多