【发布时间】:2018-06-22 23:30:31
【问题描述】:
我正在使用 Facebook Graph API 的数据来获取用户信息并在 GraphQL 服务 (graphcool) 中创建我的用户。
function createGraphcoolUser(facebookUser) {
return api.request(`
mutation {
createUser(
facebookUserId: "${facebookUser.id}"
facebookEmail: "${facebookUser.email}"
facebookName: "${facebookUser.name}"
facebookPicture: "${facebookUser.picture}"
) {
id
}
}`)
.then((userMutationResult) => {
return userMutationResult.createUser.id
})
}
但${facebookUser.picture} 是具有嵌套字段的对象。
{
"id": "123467890",
"email": "my@email.ca",
"name": "John Doe",
"picture": {
"data": {
"url": "https://url.to.picture.jpg"
}
}
}
那么如何在类型模型中定义呢?
type User @model {
# Required system field:
id: ID! @isUnique # read-only (managed by Graphcool)
# Optional system fields (remove if not needed):
createdAt: DateTime! # read-only (managed by Graphcool)
updatedAt: DateTime! # read-only (managed by Graphcool)
facebookUserId: String @isUnique
facebookEmail: String
facebookName: String
facebookPicture: ---> HERE <---
posts: [Post!]! @relation(name: "UserPosts")
}
【问题讨论】:
-
你能把图片的URL存储为字符串吗?
facebookPicture: "${facebookUser.picture.data.url}" -
是的,我暂时这样做了……但我想知道如何存储复杂的对象。
-
您也可以将
facebookPicture字段设置为 JSON 类型以保持结构,但您会失去一些验证能力。 -
好的,明天检查一下,谢谢
标签: facebook-graph-api graphql graphcool