отсутствующий поддокумент превращается в поддокумент с неопределенными значениями, и проверка схемы завершается неудачно - PullRequest
1 голос
/ 30 марта 2019

У меня есть schema.graphqls, который выглядит следующим образом:

type House {
  id: ID!
  rooms: Int!
  address: String!
  owner: Owner
}

type Owner: {
     name: String!,
     age: Int!
}

и дополняющая схема мангуста:

export default class House {
    static schema = {
        rooms: Number
        address: String,
        owner: {
            type : {
                name: String,
                age: Number
            },
            required: false
        }
    };
}

, и у меня есть объект в моем mongodb, похожий на этот (владелец уведомления намеренно отсутствует):

ObjectId("xxx") {
  rooms: 3,
  address: "the street"
}

Я пытаюсь получить этот документ, отсутствует вложенный документ владельца (что нормально, его не обязательно).Результат mongoose заполняет этот недостающий поддокумент неопределенными атрибутами

ObjectId("xxx") {
  rooms: 3,
  address: "the street"
  owner : {
     name: undefined
     age: undefined
}

, который не проходит валидацию схемы (поскольку имя и возраст являются обязательными, если поддокумент существует).

фактическая ошибка i 'я получаю:

Resolve function for "House.owner" returned undefined

Не могли бы вы указать мне, что я здесь делаю неправильно?

заранее спасибо

1 Ответ

1 голос
/ 30 марта 2019

Следуя указаниям @Neil Lunn, я понял, что проблема в схеме мангуста, что привело меня к добавлению required: false - этого было недостаточно, но после добавления также default: null вуаля.

задача решена.ошибка исчезлаокончательная схема мангуста, для которой она может представлять интерес:

export default class House {
    static schema = {
        rooms: Number
        address: String,
        owner: {
            type : {
                name: String,
                age: Number
            },
            required: false,
            default: null
        }
    };
}
...