Итак, я пытаюсь создать приложение для перебора закладок, которые я сохранил в Google Firestore. Я получаю доступ к Firestore через сервер Apollo.
Вот мои преобразователи и определения типов.
import { gql } from 'apollo-server-express';
import * as admin from 'firebase-admin';
const serviceAccount = require('./service-account.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
// Locations of bookmarks in database
const bookmarks = admin.firestore().collection("bookmarks");
export const typeDefs = gql`
type Bookmark {
name: String
url: String
preview: Preview
}
type Preview {
bookmark: Bookmark
description: String
image: String
}
type Query {
bookmarks: [Bookmark]
hello: String
}
schema {
query: Query
}
`;
export const resolvers = {
Query: {
hello(obj, args, context, info) {
return 'Hello world!'
},
async bookmarks() {
const firebaseList= await bookmarks.get();
return firebaseList.docs.map(bookmark => bookmark.data());
}
},
Preview: {
description: () => "this is a description",
}
};
Когда я отправляю этот запрос:
{bookmarks{
name
url
preview {
description
}
}}
Я хочу, чтобы он возвращал описание предварительного просмотра (очевидно), но я получаю
{
"data": {
"bookmarks": [
{
"name": "Google",
"url": "https://google.com",
"preview": null
},
{
"name": "Facebook",
"url": "https://facebook.com",
"preview": null
},
{
"name": "Instagram",
"url": "https://instagram.com",
"preview": null
},
{
"name": "Pinterest",
"url": "https://pinterest.com",
"preview": null
}
]
}
}
Что я неправильно понимаю в работе GraphQL?
нет, это не так, хотя это было не по недосмотру. Моя цель для этого кода состояла в том, чтобы в конечном итоге заполнить свойство preview метатегами Open Graph, взяв url в качестве параметра без необходимости хранить все эти данные в Firebase. Моим первым решением было сделать это в браузере, но я столкнулся с CORS, поэтому пытаюсь найти лучший способ сделать это на сервере.


Содержат ли данные, возвращаемые из firebase для каждой закладки, свойство с именем
preview?