我创建了一个通用数据表,该数据表接收一个对象(客户,产品,旅行等)。我有一个具有属性mexican_currency_value的TravelsModel对象。这个值用猫鼬定义为:
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],所以我不得不做element ['mexican_currency_value'] ['$ NumberDecimal']
是否可以执行类似element [columns.id] .value的操作?还是修改以猫鼬返回数据的方式?
答案 0 :(得分:0)
我收到此错误: 该错误的原因是您尝试呈现一个对象,而不是呈现字符串或React组件。
有什么办法可以做诸如element [columns.id] .value
是的,您只需检查即可
typeof (element[columns.id]) === 'object' ? ((element[columns.id])).values().map(v => v) : (element[columns.id])
但是我不认为这是个好主意。
还是修改以猫鼬返回数据的方式?
为简单起见,我认为最好的方法是始终为该键生成数字。