Когда я загружал файлы в graphql, я заметил, что иногда я получаю их как Promise, а иногда я получаю разрешенный файл мгновенно. После некоторого тестирования я обнаружил, что если я загружаю файл как прямой Arg, он автоматически разрешается, однако, если он вложен в объект, вы получаете Обещание (но файл внутри уже есть), которое вы должны ждать дос помощью. Чтобы прояснить ситуацию, я добавлю небольшой пример кода, чтобы проиллюстрировать:
@InputType()
export class TestFileType {
@Field(type => GraphQLUpload)
file: IUpload;
}
interface IUpload {
filename: string;
mimetype: string;
encoding: string;
createReadStream: () => Stream;
}
@Mutation(of => Boolean)
async fileUploadTest(
@Arg('file', () => GraphQLUpload) file: IUpload,
@Arg('fileObj', type => TestFileType) fileObj: TestFileType,
): Promise<boolean> {
console.log('Test File: ', file);
/* GIVES
Test File: {
filename: 'test.png',
mimetype: 'image/png',
encoding: '7bit',
createReadStream: [Function: createReadStream]
}
*/
console.log('Test OBJ file: ', fileObj.file);
/* GIVES
Test OBJ file: Promise {
{
filename: 'test.png',
mimetype: 'image/png',
encoding: '7bit',
createReadStream: [Function: createReadStream]
}
}
*/
return true;
}
Я ожидаю получить либо разрешенный файл, либо Promise в обоих случаях. Должен ли я сообщить об этом трекеру или я что-то упустил?