Первый раз использую потоки узлов, и я пытаюсь передать массив в Алголию.Предоставленный Algolia пример использует файл json.https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/sending-records-in-batches/?language=javascript#example
Я попытался структурировать массив, а затем использовать его, как описано в примере с Алголией.Я не уверен, что лучший способ сделать это.Должен ли я выполнять строковый массив или мне нужно перебирать массив и помещать его в поток?Последний подход все еще использует fs?Это будет выполняться для функций firebase, поэтому существует ограничение ресурса.
const algoliasearch = require('algoliasearch')
const fs = require('fs');
const StreamArray = require('stream-json/streamers/StreamArray');
const client = algoliasearch('999999', '999999');
//const index = client.initIndex('d_DASH');
const index = client.initIndex('t_DASH');
exports.dashStream = async function (listings) {
let jsdoc = JSON.stringify(listings);
const stream = fs.createReadStream(jsdoc).pipe(StreamArray.withParser());
let chunks = [];
stream
.on('data', ({ value }) => {
console.log("on data...")
chunks.push(value);
if (chunks.length === 10000) {
stream.pause();
index
.saveObjects(chunks)
.then(res => {
chunks = [];
stream.resume();
})
.catch(err => console.error(err));
}
})
.on('end', () => {
console.log("on end...")
if (chunks.length) {
console.log(`stream over?`)
index.saveObjects(chunks,function (err, content){
return content.taskID.toString();
})
.catch(err => console.error(err));
}
})
.on('error', err => console.error(err));
}
Код должен завершить запись в Algolia и вернуть идентификатор задачи из ответа Algolia.