У меня есть модель store
.
const StoreSchema = new Schema(
{
Name: String,
Lng: String,
Lat: String,
},
{
timestamps: true,
}
};
Я хочу добавить новое вычисляемое поле из полей Lng
и Lat
, как показано ниже;
// Location field from Lng(-48.4),Lat(34)
// This will be used for Geospatial Queries
{
type: 'Point', //constant String value
coordinates: [ -48.4, 34 ] // array of float numbers
}
Я мог бы легко добавить вычисляемое поле типа GraphQLString
. Но не удалось для Object
типа. Я попробовал, как показано ниже:
StoreSchema.virtual('Location')
.get(() => {
return {
type: 'Point',
coordinates: [parseFloat(this.Lng), parseFloat(this.Lat)]
};
});
...
const LocationType = new GraphQLObjectType({
name: "Location",
fields: {
type: {type: GraphQLString},
coordinates: {type: graphQLList(GraphQLFloat)}
}
});
const StoreType = new GraphQLObjectType({
name: "Store",
fields: {
...
Location: {type: LocationType}
}
});
Мой запрос
store {
Location {
type,
coordinates
}
}
Результат
"data": {
"store": [
{
"Location": {
"type": "Point",
"coordinates": [
null, // this is wrong. :(
null // this is wrong. :(
]
}
}
...
]
}
Итак ... Как я могу получить правильное вычисленное поле?