从mongoose对象中提取数据

92dk7w1h  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(182)

我有一个商店模型

const Shop = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  shop_name: { type: String },
  products: {_id: mongoose.Schema.Types.ObjectId,type:Array},
});

和产品模式

const Product = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  title: { type: String },
  description: { type: String },
  shop: { type: mongoose.Schema.Types.ObjectId, ref: "Shop" },
});

我正在尝试访问Shop模型的products数组中的产品,以便可以更新它。
我已经在网上搜索了很多次,但是没有找到我要找的东西。我需要使用给定的参数访问products数组中的一个非常特定的产品,这些参数是商店的id和产品的id。
这就是我想做的

const item = await Product.findOne({_id} , 'products').find({"products._id" : productId})

但如果第二个find方法找到匹配项,它就会给出mongoose对象

[
  {
    products: [ [Object] ],
    _id: 617f1bca39a5a43c1a981060,
    butik: 'scsbutik',
    butik_slug: 'egzbutikcom-1000010',
    butik_image: 'https://webizade.com/bm/img/butik-10.jpg',
    butik_points: '9.8',
    butik_order_count: 45,
    butik_success_order_count: 42,
    butik_refund_count: 3,
    is_butik_refund: true,
    __v: 0,
    login: []
  }
]

我需要访问products数组中的对象并更新该产品。
感谢您的帮助。

j2datikz

j2datikz1#

不要使用default _id格式,我建议声明一个不同的值,然后使用populate方法来实现

const Product = mongoose.Schema({
shopId: mongoose.Schema.Types.ObjectId,
title: { type: String },
description: { type: String },
shop: { type: mongoose.Schema.Types.ObjectId, ref: 'Shop' },
 });

然后路由

const item = await Product.find(_id).populate('shopId')

相关问题