1
モデルのリモートフックをプログラムで実行する必要があります。どうやってやるの?私は、任意の解決策を見つけると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);
});
};
使用例地雷を実施していなかった
は、あなただけのあなたはそれが何をしたいのかないモデル内のメソッドを作成しないだろう。リモートフックは、他のメソッドの前または後に自動的に呼び出されます。自分で実行する独自のメソッドを作成する必要があると思います。 – jfriend00
私はモデルAでリモート呼び出しを行います。オプションBを受け取ったときにモデルBが提供されていれば作成する必要があります。モデルB作成要求には、リモートフックがあります。今、このフックは、モデルBが作成され、モデルAの要求が実行されたときの2つのケースで実行する必要があります。リモートフックコードの重複を避けるための解決策を見つけようとしています –
@MaximSharai私は同じ厄介な問題にぶつかっています。これをコードの複製以外の方法で見つけましたか? – jcragun