【发布时间】:2017-05-15 22:07:13
【问题描述】:
如何表示可以是简单的ObjectId 字符串或填充的对象实体的字段?
我有一个表示“设备类型”的 Mongoose 架构,如下所示
// assetSchema.js
import * as mongoose from 'mongoose'
const Schema = mongoose.Schema;
var Asset = new Schema({ name : String,
linked_device: { type: Schema.Types.ObjectId,
ref: 'Asset'})
export AssetSchema = mongoose.model('Asset', Asset);
我试图将其建模为 GraphQLObjectType,但我对如何允许 linked_ue 字段采用两种类型的值感到困惑,一种是 ObjectId,另一种是完整的 Asset 对象(当它已填充)
// graphql-asset-type.js
import { GraphQLObjectType, GraphQLString } from 'graphql'
export var GQAssetType = new GraphQLObjectType({
name: 'Asset',
fields: () => ({
name: GraphQLString,
linked_device: ____________ // stumped by this
});
我已经研究过联合类型,但问题是联合类型需要将字段规定为其定义的一部分,而在上述情况下,linked_device 字段下方没有字段linked_device对应一个简单的ObjectId。
有什么想法吗?
【问题讨论】:
标签: node.js mongodb mongoose graphql graphql-js