Я получаю сообщение об ошибке в моем приложении Express + NodeJS. Я использую API из CoinAPI.io, и в прошлом у меня была проблема с получением массива байтов в качестве ответа от API. Я рассмотрел эту проблему и в прошлом разрешил ее с помощью Buffer.concat
, поэтому я могу отправить клиенту json в качестве ответа. Код ниже:
app.get('/build', function(req, res){
console.log('Building the database...');
// make client connect to mongo service
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("SUCCESS: Database created");
let dbo = db.db('lab5');
// Craft request header
const options = {
"method": "GET",
"hostname": "rest.coinapi.io",
"path": "/v1/assets",
"headers": {'X-CoinAPI-Key': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'}
};
// Send request to CoinAPI.io
const request = https.request(options, response => {
let chunks = [];
response.on("data", chunk => {
chunks.push(chunk);
});
response.on('end', () => {
let json = Buffer.concat(chunks);
// Insert into the database
dbo.collection('crypto').insertMany(json, function(insertErr, insertRes) {
if (insertErr) throw insertErr;
console.log("Number of documents inserted: " + insertRes.insertedCount);
db.close();
});
console.log('End of request stream')
});
});
request.end();
// print database name
console.log("NOTE: db object points to the database : "+ db.databaseName);
db.close();
});
res.end();
})
Это работало раньше, но теперь мне нужно вместо этого вставить полученные данные в базу данных MongoDB. Итак, я пытаюсь сделать insertMany
для body
объекта, который я создаю из Buffer.concat
. Но теперь я получаю следующую ошибку.
MongoError: docs parameter must be an array of documents
Я сделал console.log(json)
перед вставкой коллекции, и тело выгружает в консоль байтовый массив, с которым я просто выполнил конкатат, и я не знаю почему ,
РЕДАКТИРОВАТЬ: В ответ на Sohail об использовании .toJSON()
, это то, что произошло, когда я попытался преобразовать буфер в json
let buf = Buffer.concat(chunks);
let json = buf.toJSON();
console.log(json);
И когда я консоль журнала json ...
{
type: 'Buffer',
data: [
91, 10, 32, 32, 123, 10, 32, 32, 32, 32, 34, 97,
115, 115, 101, 116, 95, 105, 100, 34, 58, 32, 34, 78,
80, 88, 83, 34, 44, 10, 32, 32, 32, 32, 34, 110,
97, 109, 101, 34, 58, 32, 34, 80, 117, 110, 100, 105,
32, 88, 34, 44, 10, 32, 32, 32, 32, 34, 116, 121,
112, 101, 95, 105, 115, 95, 99, 114, 121, 112, 116, 111,
34, 58, 32, 49, 44, 10, 32, 32, 32, 32, 34, 100,
97, 116, 97, 95, 115, 116, 97, 114, 116, 34, 58, 32,
34, 50, 48, 49,
... 5165802 more items
]
}
и я все еще получаю ошибку вставки байтового массива / буфера