Я только что начал тривиальную схему graphql:
type Product {
productID: ID!
name: String @search(by: [term])
reviews: [Review] @hasInverse(field: about)
}
type Review {
id: ID!
about: Product! @hasInverse(field: reviews)
by: Customer! @hasInverse(field: reviews)
comment: String @search(by: [fulltext])
rating: Int @search
}
type Customer {
custID: ID!
name: String @search(by: [hash, regexp])
reviews: [Review] @hasInverse(field: by)
}
Теперь я хочу заполнить БД миллионами записей json, не вызывая мутацию graphql (слишком медленно). Например, у меня есть папка, полная нескольких файлов json (клиентов и продуктов) следующей формы.
Пример файла клиента json:
{
id: "deadbeef",
name: "Bill Gates",
reviews: [
{
id:"1234",
comment: "nice product"
rating: 5,
productId: "5678"
}
]
}
Пример файла продукта json:
{
id: "5678",
name: "Bluetooth headset",
}
Насколько я понял, для определенных ребер между узлами , мне сначала нужно перегрузить каждый объект uid
Заказчиком станет:
{
id: "deadbeef",
uid: "_:deadbeef",
...
reviews: [
{
id:"1234",
uid:"_:1234",
productId: {uid: "_:5678"}
}
]
}
И продукт
{
id: "5678",
uid: "_:5678"
...
}
Тогда мы могли бы импортировать их в пакетном режиме (это чистое предположение, я никогда не пробовал это). Хотя это должно импортировать записи, я хотел бы знать, как БД будет связывать эти записи с типом, потому что пока нет никакой информации о данных, которые мы хотим вставить. Есть ли свойство типа __typename
, которое я мог бы добавить к каждой из своих записей, чтобы напечатать их?
[править] Я нашел 2 возможных свойства class
и dgraph.type
, все еще задаваясь вопросом, какое из них и как мнеследует использовать их