Я запускаю сервер GraphQL, используя бессерверную структуру на AWS Lambda. Я получаю данные в пользовательском интерфейсе, используя apollo-link-batch-http
.
Если я запускаю его локально, используя serverless-offline
, он работает нормально. Но если я запускаю его на AWS Lambda, он успешно разрешает fooResolver
, но не barResolver
, поскольку выдает указанное выше сообщение об ошибке.
Model.cached(300)
— это крошечная оболочка кэша, которую я сделал. Вы можете увидеть это здесь: https://gist.github.com/lookapanda/4676083186849bb6c5ae6f6230ad7d8f в основном просто позволяет мне использовать мою собственную функцию findById
и так далее.
Странно то, что эта ошибка появляется только в том случае, если я использую apollo-link-batch-http
, но не в том случае, если я использую apollo-link-http
. Итак, если запрос объединен в один запрос GraphQL, таких ошибок нет (хотя тогда я получаю эту ошибку: https://github.com/sequelize/sequelize/issues/9242)
Я действительно не знаю, что там происходит, ни в одном из этих распознавателей нет сырого запроса where. И это становится еще более странным: это происходит только с кешированным результатом. Первый запрос полностью действителен и успешен, но затем каждый последующий запрос завершается ошибкой с указанным выше сообщением об ошибке.
Я очень надеюсь, что кто-то может мне помочь, я схожу с ума :D
export const fooResolver = async () => {
const Model = db.getDB().sequelize.models.fooModel;
const data = await Model.cached(300).findAll({
where: {
time: {
[Op.gt]: Model.sequelize.literal('CURRENT_TIMESTAMP()'),
},
enabled: true,
state: 'PLANNED',
},
order: [['time', 'DESC']],
limit: 5,
});
return data.value;
};
export const barResolver = async () => {
const models = db.getDB().sequelize.models;
const Model = models.fooModel;
const data = await Model.findById(data.id, {
include: [
{
model: models.barModel,
include: [
{
association: 'fooAssociation',
include: [{ association: 'barAssociation' }],
order: ['showOrder', 'ASC'],
},
],
},
],
});
return {
data,
};
};