将分块数据附加到变量会产生意外结果
Appending chunked data to a variable gives an unexpected result
我正在尝试将来自 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 数组。
给miniData
一个初始值。如果您不这样做,它会隐式地 undefined
和 undefined
加上字符串使 undefined
转换为单词。请参阅下面的示例。
没有初始化变量:
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.parse
miniData
所以 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)})
});
});
我正在尝试将来自 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 数组。
给miniData
一个初始值。如果您不这样做,它会隐式地 undefined
和 undefined
加上字符串使 undefined
转换为单词。请参阅下面的示例。
没有初始化变量:
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.parse
miniData
所以 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)})
});
});