appbaseio / appbaseio/reactivecore

autosuggest fails on null values

未关闭
#69 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
JavaScript
星标
33
派生
27
PR 合并指标
30 天内没有已合并 PR

描述

We are utilizing `reactivesearch` to query some Elastic data. We are utilizing the `showMissing` prop option on several filters that are using `MultiList`. Our understanding is that missing/null data is necessary for `showMissing` to function and this is all working.

There is also a `DataSearch`. Today, I was asked to connect the `DataSearch` to more `dataFields` and some of those fields are null for some records. For the `showMissing` to function, I can't (as far as I know) avoid having these `null` values. When I added the additional fields to the `DataSearch`'s `dataFields`, the app would crash as soon as I typed anything into the input.

Stack trace showed it was crashing at the `str.replace` in `replaceDiacritics` (in suggestions.js) because `str` had a value of `null`:
```javascript
function replaceDiacritics(s) {
let str = s ? String(s) : s;

const diacritics = [
/[\300-\306]/g, /[\340-\346]/g, // A, a
/[\310-\313]/g, /[\350-\353]/g, // E, e
/[\314-\317]/g, /[\354-\357]/g, // I, i
/[\322-\330]/g, /[\362-\370]/g, // O, o
/[\331-\334]/g, /[\371-\374]/g, // U, u
/[\321]/g, /[\361]/g, // N, n
/[\307]/g, /[\347]/g, // C, c
];

const chars = ['A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'N', 'n', 'C', 'c'];

for (let i = 0; i < diacritics.length; i += 1) {
str = str.replace(diacritics[i], chars[i]); // crash here
}

return str;
}
```

I won't say this is the best fix, but I put a band-aid on the issue by changing
```javascript
const populateSuggestionsList = (val, parsedSource, source) => {
// check if the suggestion includes the current value
// and not already included in other suggestions
const isWordMatch = skipWordMatch || currentValue
.....
```
into
```javascript
const populateSuggestionsList = (val, parsedSource, source) => {
// check if the suggestion includes the current value
// and not already included in other suggestions
val = val ? val : ''; // new
const isWordMatch = skipWordMatch || currentValue
.....
```

There may be reasons I'm not aware of that you wouldn't want to support the possibility of autosuggest encountering `null` values, but I thought I would open the issue to inquire if this was the intended behavior.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。