node.js - Mongodb在数组元素内返回对象
问题描述
我有这个猫鼬模式,
const Schema = mongoose.Schema;
const productSchema = new Schema({
name: { type: String, required: true },
image: { type: String, required: true },
saleSizes: [ //Sizes that a particular item has, ex.. Size P , M, G XG
{
saleSize: { type: String, required: true }, //actual sizes, ex.. P
price: { type: Number, required: true }, // sales price for size P
},
],
category: { type: String, required: true },
active: { type: Boolean, default: true },
});
const Product = mongoose.model('Product', productSchema);
module.exports = Product;
当我加载页面时,我使用 find() 方法列出我所有的商品以及销售尺寸和价格。这是我正在使用的功能。
function homeController() {
return {
async index(req, res) {
const products = await Product.find();
console.log(products);
const categories = [
...new Set(products.map((product) => product.category)),
];
return res.render('home', { products: products, categories: categories });
},
};
}
find() 方法的返回是这样的。
[
{
active: true,
_id: 60affa70d981bc59b64f2e09,
name: 'Alface Americana',
image: 'alface-americana.png',
saleSizes: [ [Object], [Object] ],
category: 'Hortaliças'
},
{
active: true,
_id: 60affa70d981bc59b64f2e0a,
name: 'Couve',
image: 'Couve.png',
saleSizes: [ [Object], [Object] ],
category: 'Hortaliças'
},
{
active: true,
_id: 60affa70d981bc59b64f2e0b,
name: 'Agrião',
image: 'agriao.png',
saleSizes: [ [Object], [Object] ],
category: 'Hortaliças'
},
{
active: true,
_id: 60affa70d981bc59b64f2e0c,
name: 'Rúcula',
image: 'rucula.png',
saleSizes: [ [Object], [Object] ],
category: 'Hortaliças'
},
{
active: true,
_id: 60affa70d981bc59b64f2e0d,
name: 'Limão Taiti',
image: 'limao-taiti.png',
saleSizes: [ [Object], [Object] ],
category: 'Frutas'
},
{
active: true,
_id: 60affa70d981bc59b64f2e0e,
name: 'Goiaba Vermelha',
image: 'goiaba-vermelha.png',
saleSizes: [ [Object], [Object] ],
category: 'Frutas'
}
....
]
请注意,salesSizes 属性作为对象数组返回。
saleSizes: [ [Object], [Object] ].
我需要回报是这样的。
{
active: true,
_id: 60affa70d981bc59b64f2e18,
name: 'Granola',
image: 'granola.png',
price: '500',
saleSizes: [
{saleSize: "P", price: "100"},
{saleSize: "G", price: "200"}
],
category: 'Grãos'
}
实现这一目标的最佳方法是什么?
PS:对不起我的英语,我来自巴西,还在学习(我认为这是一个永远的过程)。
解决方案
它被正确返回。saleSizes
是对象的数组。{saleSize: "P", price: "100"}
是对象。您可以尝试访问这些嵌套对象,如下所示:
let size = saleSizes[0].saleSize;
let price = saleSizes[0].price;
推荐阅读
- c - WINAPI 确定是否存在特定的 SCSI 设备
- api - 使用 POST API 调用重试 Ansible URI PUT API 调用
- python - 修剪二维数组中数据点之间的循环
- python - Django从同一查询集中返回对象列表和ID列表
- apache-spark - 如何将 Spark-excel 添加到 PySpark
- c++ - EventEmitter2 C++ 实现
- ios - iOS:如何显示一个“可点击标签”框
- mysql - 按列分组。如果为 null,则按 MySQL 的其他列分组
- python-3.x - Python加密xlsx而不调用win32 COM API
- python - Supervisord 监听器:每 10 分钟执行一次 symfony 命令