В node.js у меня есть файл databaseMapper.js
, в котором используется API-интерфейс MapR для Ojai. извлечь данные. Пока что он работает с отдельными документами, но так как это asyn c api, у меня есть некоторые проблемы с запросом нескольких документов.
Это то, что у меня есть:
function queryResultPromise(queryResult) {
//this should handle multiple promises
return new Promise((resolve, reject) => {
queryResult.on("data", resolve);
// ...presumably something here to hook an error event and call `reject`...
});
}
const getAllWithCondition = async (connectionString, tablename, condition) =>{
const connection = await ConnectionManager.getConnection(connectionString);
try {
const newStore = await connection.getStore(tablename);
const queryResult = await newStore.find(condition);
return await queryResultPromise(queryResult);
} finally {
connection.close();
}
}
здесь он будет возвращать только первое, потому что queryResultPromise
будет resolve
в первом документе ... однако обратный вызов с "data"
может происходить несколько раз, прежде чем queryResult закончится следующим образом queryResult.on('end', () => connection.close())
Я пытался использовать что-то вроде Promise.all()
, чтобы разрешить все из них, но я не уверен, как включить обратный вызов queryResult.on
в этот лог c