首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保存内部文档,创建包含文档的文档

保存内部文档,创建包含文档的文档
EN

Stack Overflow用户
提问于 2022-05-07 02:48:07
回答 1查看 22关注 0票数 1

我正在学习猫鼬,我有一个问题:如何保存几份文件:

代码语言:javascript
运行
复制
// Product.js
const categorySchema = mongoose.Schema(
  { name: String },
  { collection: "categories" }
);
const productSchema = mongoose.Schema(
  { name: String, category: categorySchema },
  { collection: "products" }
);
modules.exports = mongoose.model("Product", productSchema);

我的想法是,当我用这种方式创建一个产品

代码语言:javascript
运行
复制
const Product = require("./Product.js")
const product = new Product({name: 'Soccer Ball', category: {name: "Sports"})
await product.save()

我想在集合产品中得到一个文档,也想在集合类别中获得一个文档。

怎么可能

提前感谢

PD :我知道了,但是类别不在集合中保存

代码语言:javascript
运行
复制
{
  "msg": "Product created succesfully",
  "ok": true,
  "product": {
    "name": "Soccer ball",
    "category": {
      "name": "Sports",
      "_id": "6275df4c8149967bea21e7c0"
    },
    "_id": "6275df4c8149967bea21e7bf",
    "__v": 0
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-07 07:19:34

您应该将Productcategory定义为ref属性:

代码语言:javascript
运行
复制
// Product.js
const categorySchema = mongoose.Schema(
    { name: String },
    { collection: 'categories' }
  );
const productSchema = mongoose.Schema(
    {
      name: String,
      category: { type: mongoose.Schema.Types.ObjectId, ref: 'categories' },
    },
    { collection: 'products' }
  );
modules.exports = {
    Category: mongoose.model('Category', categorySchema),
    Product: mongoose.model('Product', productSchema),
}

为此,您将需要将类别的_id分配给新的Product

代码语言:javascript
运行
复制
const { Category } = require("./Product.js")
const { Product } = require("./Product.js")
// Create category (supposing it is not present)
const category = new Category({ name: "Sports" })
await category.save()
// Add category _id to product
const product = new Product({name: 'Soccer Ball', category: category._id})
await product.save()

最后,您将能够使用populate检索产品。

代码语言:javascript
运行
复制
const product = await Product.findById(<product_id>).populate('categories').exec()

这个查询应该提供与以前相同的结果,但是Category数据将从Category集合中的引用中加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72149091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档