Узел 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
})
Какие-нибудь мысли?