2017-01-31 7 views
1

Я пишу 'после сохранения' крючок и есть некоторые проблемы с чтением данных.loopback after save - данные не определены?

Что я хотел бы сделать, так это получить доступ к данным в другой модели, но при этом это undefined.

Вот код:

module.exports = function(Fault) { 
    Fault.observe('after save', function(ctx, next) { 
    ctx.Model.app.models.faulttype.find({where:{id:ctx.instance.faulttypeId}}, function(err, faulttype) { 
     if (err) 
     console.log(err); 
     console.log(faulttype); 
     console.log(faulttype.slogan); 
    .... 
} 

Я использую ctx.Model.app.models, чтобы захватить одну из других моделей у меня есть (faulttype). Проблема будет позже, когда я его использую.

В первом console.log он записывает все атрибуты и значения для faulttype, но когда я пытаюсь использовать определенный атрибут, как и во втором console.log, где я использую faulttype.

лозунг Получаю, что это undefined. Я не понимаю, почему.

Любые идеи/комментарии?

+0

Пожалуйста, проверьте, чтобы увидеть http://stackoverflow.com/help/mcve Как создать пример минимального, полного и проверяемого – pringi

ответ

0

faulttypeId является справочным ключом foregin в модели Fault?

Поскольку ты не предоставил достаточно информации для меня, чтобы судить, я предполагаю, что проблема в том, что при определенных методах нет ctx.instance - данные скрыты в динамически назначаемый свойство dending по методу: Check this tabel for reference

Могли что метод, который вы используете, не передает экземпляр в объект контекста. Вы используете метод updateAll?

Если бы вы могли предоставить более подробную информацию (какой метод, структура CTX (только console.dir(ctx);, и т.д. и т.п.) Я мог бы догадаться, больше :)