NodeJSとMongooseを使用して、既に実稼働中のREST APIと一緒に行くためにGraphqlサービスを構築し始めていますが、 mongooseスキーマをGraphQL型に変換します。サブフィールドを持つmongooseスキーマからGraphql Typeを生成
私は、次のスキーマがありますので、
var userSchema = new mongoose.Schema({
name: {type: String, required: true},
email: {type: String},
imageURL: {type: String, default:null},
providerId: {type: String, required: true},
token: {type: String, required: true},
history: [{
orders:[{type: mongoose.Types.ObjectId, ref:'Order'}],
restaurant: {type: mongoose.Types.ObjectId, ref: 'Restaurant'}
}]
}, { timestamps: true});
は、基本的には、トラブルがhistory
フィールドです。このフィールドは、orders(別のマングーススキーマを参照するオブジェクトのリスト)とrestaurant(レストランのマングーススキーマを参照する)の2つのサブフィールドを持つオブジェクトのリストです。
私の主な質問は:history
フィールドでmongooseで行ったように、 "User"に対応するGraphQLタイプを書くときにサブフィールドを作成する方法があるのか、それとも2番目のタイプを作成してからこれを参照する必要があります(GraphQLで作成するだけで、アプリケーションが他のスキーマをmongooseで作成する必要はないことを知っています)。
私はモングースにいなかったので、歴史のために別のタイプを作る必要があるのかどうか疑いがありました。だから私はそれをします。説明をありがとう –
@ThiagoNascimentoあなたは[JSONカスタムスカラー](https://github.com/taion/graphql-type-json)を代わりに使うことができますが、次に要求できるものを厳しく制限しています。フィールドを要求する人は、それをレストランだけに限定することはできず、各注文のいくつかのフィールドだけを絞り込むこともできません)。また、履歴内の個々のフィールドを簡単にスタブまたはモックする機能も失われます。 –
それはわかりませんでしたが、私はおそらく別々のタイプになっていますので、要求に柔軟性を持たせることができます –