После прочтения этой статьи я создал файл await-handler.js, который включает следующий код.
module.exports = (promise) =>
promise
.then(data => ({
ok: true,
data
}))
.catch(error =>
Promise.resolve({
ok: false,
error
})
);
Затем в файле MyModel.js я создал асинхронную функцию дляполучить значение из базы данных следующим образом.
const awaitHandler = require("./../await-handler.js")
const getMaxNumber = async (MyModel) => {
let result = await awaitHandler(MyModel.find());
if (result.ok) {
if (result.data.length) {
return result.data.reduce((max, b) => Math.max(max, b.propertyName), result.data[0] && result.data[0].propertyName);
} else {
return 0;
}
} else {
return result.error;
}
}
Согласно ответу @ Mehari, я прокомментировал вызов метода next()
следующим образом: -
module.exports = function(MyModel) {
MyModel.observe('before save', async(ctx, next) => {
const maxNumber = await getMaxNumber (MyModel);
if(ctx.instance) {
...
set the required property using ctx.instance.*
like createdAt, createdBy properties
...
// return next();
} else {
...
code for patch
...
// return next();
}
})
}
Это устраняет предупреждениепроблема при каждом запуске сохранения конечной точки.
Но проблема предупреждения все еще появляется, когда я запускаю конечную точку для загрузки ресурса. Как http://localhost:3000/api/MyModel
Раньше проблема возникала только тогда, когда срабатывает ловушка операции before save
.
После возникновения этой проблемы я проверил добавление хуков операций access
и loaded
и обнаружил, что предупреждения выдаются после хука операций loaded
.
MyModel.observe('access', (ctx, next) => {
return next();
})
MyModel.observe('loaded', (ctx, next) => {
return next();
})
Что может иметьвызвал эту проблему и как она может быть решена?