Я отчаянно пытался позвонить модели "Feature
", прежде чем перейти на линию (if(serviceExists===undefined))
, как показано ниже, но безрезультатно.Я думал, что async await
- это путь, но он тоже не помогает.
Я попытался поместить первый блок if в Promise и разрешить serviceExists
в переменной для Promise, но это не помогло.тоже не работает.Поток кода просто ждет, пока Feature.query выберет объекты, и переходит ко второму блоку if, т.е. (if(serviceExists === undefined))
.И выполнение этого блока зависит от предыдущего.Поток никогда не достигает "базовой" проверки (т. Е. 1-го блока if, в 1-м блоке снаружи if).Как мне сделать так, чтобы он ожидал результата от Feature Feature перед дальнейшим выполнением?
let clientFeatures = await ClientFeature.query("clientId")
.eq(clientMongoId)
.exec();
if (clientFeatures.length > 0) {
var serviceExists;
clientFeatures.map(async item => {
let existingFeature = await Feature.queryOne("id")
.eq(item.featureId)
.exec();
let existingFeatureType = existingFeature.type;
if (
existingFeatureType === "base" &&
reSelectedFeatureType === "base"
) {
existingBaseFeatureId = existingFeature.id;
if (existingBaseFeatureId === reSelectedFeature[0].id) {
serviceExists = true;
}
}
});
}
if (serviceExists === undefined) {
var clientFeatureGen = await ClientFeature.create({
id: uuidv1(),
clientId: clientMongoId,
featureId: featureMongoId
});
}