В хранимой процедуре я обнаружил, что выполнение collection.queryDocuments(...)
с предложением WHERE
не вернет документы, которые были ранее созданы в том же исполнении.Это ожидаемое и есть ли способ обойти это?
Например, возьмите эту упрощенную хранимую процедуру:
function createThenQuery() {
const collection = getContext().getCollection();
const collectionLink = collection.getSelfLink();
const response = getContext().getResponse();
const document = { name: "Some Name" };
collection.createDocument(collectionLink, document, (err, createdDocument) => {
const query = `SELECT * FROM c WHERE c.name='${document.name}'`;
collection.queryDocuments(collectionLink, query, {}, (err, retrievedDocs) => {
console.log(retrievedDocs.length);
});
});
}
Это выдает следующее:
1st run: 0
2nd run: 1
3rd run: 2
etc...
ОднакоКогда я удаляю предложение WHERE
(SELECT * FROM c
), оно выдает следующее:
1st run: 1
2nd run: 2
3rd run: 3
etc...
Я ожидаю этот второй вывод в обоих сценариях.Можно ли как-то исправить это, чтобы оно возвращало то, что я ожидаю при использовании предложения WHERE
?
Я предполагаю, что это может быть из-за того, что какой-то индекс не обновляется, пока не завершится выполнение хранимой процедурыа сделка совершена?Возможно, есть способ отключить это или принудительно обновить?В этом случае это однократный скрипт, поэтому он будет работать, если он будет работать немного медленнее.
Сейчас я согласен на ведение отдельного массива созданных документов, которые я просматриваю, в дополнение к поиску документов вКоллекция.Это не идеально, потому что это добавляет сложности.