Способ работы _.getOr
состоит в том, что он предоставляет значение по умолчанию (первый аргумент) в случае, если значение, на которое ссылается путь (второй аргумент), не может быть найдено в объекте (третий аргумент).На самом деле это то же самое, что и _.get
, но порядок аргументов перевернут.
Здесь приведен пример:
let myObjects = [{
shift: {
id: 1,
example: "text1"
}
},
{
shift: {
id: 2,
example: "text3"
}
},
{
shift: {
example: "text2"
}
}
]
myObjects.forEach((object) => {
let result = _.getOr(null, "shift.id", object)
console.log(result);
})
<script src="https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)"></script>
Вывод на консоль:
1
2
null
Из того, что вы описали, хотя мне не ясно, что на самом деле вы пытаетесьсделать.Помните, что get / getOr вернет то, на что ссылается путь (даже если он уже нулевой), если его там нет (как в undefined
), и в этот момент он вернет значение по умолчанию.
Так что в этомслучай, когда нет shift.id
, вы просите _.getOr
вернуть ноль.Похоже, что вы получаете сообщение об ошибке в GraphQL при попытке использовать его с нулевым значением.В данном случае это не проблема с lodash, а проблема с вашими данными / тем, как вы используете GraphQL.
Если это не подходящий инструмент для работы, я не могу предложить что-либо ещене видя больше вашего кода / зная больше о проблеме.Я бы предложил еще раз взглянуть на вашу общую проблему, а затем, возможно, задать другой вопрос, если это будет необходимо.