Как я могу проследить свойства объекта в реакции? - PullRequest
0 голосов
/ 03 июня 2019

Я создал общий набор данных, который получает объект (клиенты, продукты, путешествия и т. Д.). У меня есть объект TravelsModel, который имеет свойство mexican_currency_value. Это значение определяется с помощью mongoose как:

var travelSchema = new mongoose.Schema({
        name: String,
        description: String,
        mexican_currency_value: mongoose.Schema.Types.Decimal128
    });

Также у меня есть функция, которая возвращает список со всеми сохраненными путешествиями:

function getTravels(req, res) {

    if (req.params.id) {
        TravelModel.findById( String(req.params.id) , (err, value) => {
            if ( err ) {
                return res.status(500).send({
                    message: messageError
                })
            }
            return res.status(200).send({
                results: value
            });
        });
    } else {
        TravelModel.find((err, value) => {
            if (err) {
                return res.status(500).send({
                    message: messageError
                })
            }
            return res.status(200).send({
                results: value
            });
        });
    }
}

Эта функция возвращает несколько перемещений с этой структурой:

  description: "Primer Viaje"
  mexican_currency_value: {$numberDecimal: "18.5"}
  name: "Viaje 1"
  __v: 0
  _id: "5cf56b04462a865264fabb9d"

Мои данные сделаны примерно так:

            <DataTable plain>
                <TableHeader>
                    <TableRow>
                        {tableColumnHeader.map(element => (
                            <TableColumn key={element.id}>{element.text}</TableColumn>
                        ))}
                        <TableColumn key="actions">Acciones</TableColumn>
                    </TableRow>
                </TableHeader>
                <TableBody>
                    {tableRow.map((element, idx) => (
                        <TableRow key={idx}>
                            <TableColumn>{tableColumnHeader.map( columns => ( 
                                <div key={element[columns.id]}>{element[columns.id]}</div>
                            ))}</TableColumn>
                            <ActionsMenu id={element._id} onDelete={onDelete} onUpdate={onUpdate} />
                        </TableRow>
                    ))}
                </TableBody>
                <TableFooter />
            </DataTable>

Я получаю эту ошибку:

Objects are not valid as a React child (found: object with keys {$numberDecimal}). If you meant to render a collection of children, use an array instead.

Это потому, что туристический объект не может получить доступ к элементу [columns.id], мне нужно будет сделать элемент ['mexican_currency_value'] ['$ NumberDecimal']

Есть ли способ сделать что-то вроде элемента [columns.id] .value? Или изменить способ возврата данных в мангусте?

1 Ответ

0 голосов
/ 03 июня 2019

Я получаю эту ошибку: причина этой ошибки в том, что вы пытаетесь визуализировать объект вместо рендеринга строки или компонента React.

Есть ли способ сделать что-то вроде элемента[columns.id] .value

Да, вы можете просто проверить

typeof (element[columns.id]) === 'object' ? ((element[columns.id])).values().map(v => v) : (element[columns.id])

Но я не думаю, что это хорошая идея.

Или изменить способ возврата данных в mongoose?

Я думаю, что наилучшим подходом будет использование чисел для этого ключа всегда ради простоты.

...