私はGraphQLを使用するAPIを作成しています。私はまだそれほど新しく、突然変異に関するいくつかの問題にぶち当たっています。私のAPIの単純な形式には2つのレコードタイプがあります。連絡先レコードとタグレコードがあります。連絡先レコードには複数のタグレコードが関連付けられています。入れ子になったスキーマを使用してGrahpQLの突然変異を作成する方法
私はこれらのレコードタイプのそれぞれのために書いたスキーマは以下の通りです:
const Tag = new graphQL.GraphQLObjectType({
name: 'Tag',
description: 'Categorizes records into meaningful groups',
fields:() => ({
_id: {
type: graphQL.GraphQLID
},
name: {
type: graphQL.GraphQLString
}
})
});
const Contact = new graphQL.GraphQLObjectType({
name: 'Contact',
description: 'Contact record',
fields:() => ({
_id: {
type: graphQL.GraphQLID
},
name: {
type: graphQL.GraphQLString
},
tags: {
type: new graphQL.GraphQLList(Tag),
resolve: function(src, args, context) {
return TagModel.findByContactId(src._id)
.then(tags => {
return Promise.map(tags, (tag) => {
return TagModel.findById(tag.tag_id);
});
});
}
}
})
});
私は、彼らが彼ら自身のネストされたレコードが含まれていませんので、タグなどの記録に十分な変異が容易になりますが、私ができ連絡先のようなレコードにもタグを入れることができるので、どのように突然変異を作るのか分かりません。私は場所に置か突然変異のコードは次のようになります。
const Mutation = new graphQL.GraphQLObjectType({
name: 'Mutation',
fields: {
createContact: {
type: Contact,
description: "Create Contact",
args: {
name: {type: new graphQL.GraphQLNonNull(graphQL.GraphQLString)},
tags: {type: new graphQL.GraphQLList(Tag)}
},
resolve: function(source, args) {
return ContactModel.save(args.name);
}
}
}
});
私は同時に接触し、タグの記録を保存することができるようにするために、突然変異でリゾルバを完了するかどうかはわかりません。私は、このタイプのを可能にするために、私の突然変異スキーマで行う必要があることを特別な何かが
{"query": "mutation createNewContact {
contact: createContact (name: "John Smith", tags { name: "family" })
{_id, text, tags { name } } }" }
あります:私は、突然変異の問い合わせを行った場合例えば、このような新しいタグで新しい連絡先レコードを保存します突然変異は起こるか?
ようになり実行します。ありがとう!タグのデータを返信しても問題はあります。リゾルバで何もしないときにargsを返すだけで、すべてのプロパティが戻ってきますが、タグは空の配列にすぎません。 {contact:_id:1、name: "John"、タグ:[]}のようなものです。タグのデータが返されるために必要なものがありませんか? – tbergen1