appbaseio / appbaseio/reactivecore

autosuggest fails on null values

オープン
#69 コメント 0 件 リアクション 0 件 担当者 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 を短くまとめたダイジェスト。