Loopback - Getting Function Back Instead Of Values
For some endpoints I get a function back when called instead of the actual values (code at the end). It looks like that it only appears for nested endpoints through my Patient mode
Solution 1:
I reproduced this error:
SomeModel.find({ where: { userId: userId }, include : ['otherModel'] }, (err, response) => {
var someArray = response;
for (var x in someArray) {
var otherModel = someArray[x].otherModel;
console.log(otherModel);
}
});
The console output of otherModel is :
function (condOrRefresh, options, cb) {
if (arguments.length === 0) {
if (typeof f.value === 'function') {
return f.value(self);
} elseif (self.__cachedRelations) {
return self.__cachedRelations[name];
}
} else {
const condOrRefreshIsCallBack = typeof condOrRefresh === 'function' &&
options === undefined &&
cb === undefined;
if (condOrRefreshIsCallBack) {
// customer.orders(cb)
cb = condOrRefresh;
options = {};
condOrRefresh = undefined;
} elseif (typeof options === 'function' && cb === undefined) {
// customer.orders(condOrRefresh, cb);
cb = options;
options = {};
}
options = options || {};
// Check if there is a through model// see https://github.com/strongloop/loopback/issues/1076if (f._scope.collect &&
condOrRefresh !== null && typeof condOrRefresh === 'object') {
f._scope.include = {
relation: f._scope.collect,
scope: condOrRefresh,
};
condOrRefresh = {};
}
return definition.related(self, f._scope, condOrRefresh, options, cb);
}
}
Since the output of otherModel is a function. I tried calling it with :
var otherModel = batchArray[x].otherModel()
as a function instead of var otherModel = batchArray[x].otherModel
. It gives the desired output.
This behaviour explains that the include filter returns a function of the model which gets executed and passes as an object to the frontend but in the backend it needs to be called as a function.
I am still trying to figure out how it returns the desired object to frontend and a function to backend. Any leads would be helpful.
Post a Comment for "Loopback - Getting Function Back Instead Of Values"