Узел Orm "Вложенные объекты" не всегда возвращается

У меня есть страница, которая загружает себя со списком из 25 объектов, прежде чем сделать REST-запрос для всего списка (234 объекта в тесте).

Поскольку я обращаюсь к одному и тому же запросу через две разные точки входа, я абстрагируюсь в функцию:

ideaListTrailingWeek: function index(req, limit){
    var user = req.user
    var Idea = req.db.models.dili_forum;

    var now = new Date()
    // set now to be 100 days ago because my data set is old
    now = dateHelper.addDays(now, -100)
    var weekAgo = dateHelper.addDays(now, -7)

    var promise = _.isUndefined(limit) ?
        Idea.qFind({ date_added: orm.gte(weekAgo) },{autoFetchLimit: 2}, ['-id']) :
        Idea.qFind({ date_added: orm.gte(weekAgo) },{autoFetchLimit: 2}, limit, ['-id'])

    return promise.then(function (ideas) {

        var ideasFinal = _.chain(ideas)
            .map(ideaTx.lightIdea)
            .value()

        return ideasFinal
    })
}

Все работает нормально (выбирая правильное обещание и выполняя его). Модель

 Idea -many-> IdeaIndustry -one-> Industry
 Idea -one-> User -one-> Member

Если я получаю доступ с помощью вызова, который сначала загружает страницу с "лимитом", то страница загружается нормально. Модель загружается на нужную глубину. Однако последующий вызов rest выполняется (выбор обещания без ограничения) и не не возвращать ни один из вложенных объектов (ни пользователя первого уровня, ни более глубоких объектов).

Если я перезагружаю Node-сервер и получаю доступ через вызов REST (выбирая обещание без ограничения), весь набор данных загружается с надлежащей глубиной.

Я установил все свои отношения с отношениями hasOne, чтобы не использовать его в предыдущих проектах. Тем не менее, я планирую исследовать многие отношения, как только у меня это работает должным образом. Этот проект имеет устаревшую базу данных, созданную оффшорными подрядчиками с плохими именами и неправильно маркированными полями. Модели:

   var Idea = db.define('dili_forum', {
        id : Number,
        title : String,
        content : String,
        user_id : Number,
    }, {
        autoFetch: true
    }) ;

   var IdeaIndustry = db.define('teaser_industries', {
        id: Number,
        teaser_id: Number,
        sub_industry_id : Number
    }, {
        autoFetch: true
    }) ;

    var Industry = db.define('mas_flattened_industry', {
        industry_id: Number,
        industry_name : String,
        parent_industry_id: String,
        parent_industry_name: String,
        category_name: String
    }, {
        id: 'industry_id',
        autoFetch: true
    }) ;

Я могу опубликовать цепочку пользовательских моделей, если это поможет. Вот как устанавливаются отношения:

    Idea.hasOne('user', User, {
        reverse: 'ideas'
        , field: 'user_id'
        , autoFetch: true
    })

    IdeaTicker.hasOne('idea', Idea, {
        reverse: 'tickers'
        , field: 'teaser_id'
        , autoFetch: true
    })

    IdeaIndustry.hasOne('idea', Idea, {
        reverse: 'industries'
        , field: 'teaser_id'
        , autoFetch: true
    })

    IdeaIndustry.hasOne('industry', Industry, {
        field: 'sub_industry_id'
        , autoFetch: true
    })

Какие-нибудь мысли?

0 ответов

Другие вопросы по тегам