1
Мне нужно программно запускать удаленные крючки для модели. Как я могу это сделать?Node.js + Loopback: программно запускать удаленные крючки
Мне нужно программно запускать удаленные крючки для модели. Как я могу это сделать?Node.js + Loopback: программно запускать удаленные крючки
я не нашел каких-либо решений и реализованы шахты
/**
* Trigger execution of remote hooks of a model
*
* @param app The loopback application
* @param modelName The model name
* @param data The model data
* @param when The possible values are 'before' or 'after'
* @param method The remote method name
* @param ctx The hooks context
* @param next
*/
exports.execHooks = function(app, modelName, data, when, method, ctx, next) {
// Save original context values
var originalData = ctx.args.data || {};
var originalMethod = ctx.method;
// Get shared method
var modelSharedClass = app.remotes().classes().filter(function(item) {
return item.name === modelName;
})[0];
var modelSharedMethod = modelSharedClass.methods().filter(function(item) {
return item.name === method;
})[0];
// Change context data
ctx.args.data = data;
ctx.method = modelSharedMethod;
ctx.methodString = modelSharedMethod.stringName;
// Execute hooks
var remoteObject = app.remoteObjects()[modelName];
app.remotes().execHooks(when, modelSharedMethod, remoteObject, ctx, function(err) {
// Restore context data
var changedData = ctx.args.data;
ctx.args.data = originalData;
ctx.method = originalMethod;
ctx.methodString = originalMethod.stringName;
next(err);
});
};
Пример использования:
utils.execHooks(app, app.models.MyModel, model, 'before', 'create', ctx);
Вы бы не просто создать метод в модели, которая делает то, что вы хотите, чтобы это сделать , Удаленные крючки вызываются автоматически до или после других методов. Я думаю, вам придется создать свой собственный метод для их выполнения самостоятельно. – jfriend00
У меня есть удаленный вызов в модели A, когда я опционально получаю модель B. Если модель B предоставляется, я должен ее создать. Запрос на создание модели B имеет удаленные крючки. Теперь эти крючки должны выполняться в двух случаях, когда создается модель B и когда выполняется запрос для модели A. Я пытаюсь найти решение, чтобы избежать дублирования кода дубликатов кода –
@MaximSharai Я столкнулся с той же досадной проблемой. Вы нашли решение для этого, кроме дублирующего кода? – jcragun