【问题标题】:One to Many mapping in mongoose, How to receive and process?猫鼬中的一对多映射,如何接收和处理?
【发布时间】:2013-07-18 09:57:39
【问题描述】:

我遇到的问题是与猫鼬(Mongodb)的一对多映射。一个是订单(买家数据),许多是商品(价格、数量等)。

1) 我应该如何为订单和项目创建架构,比如我应该将项目按订单放在一个数组中吗?

2) 是否所有数据都在一个 post 函数中?

我认为您可以使用 ObjectId 将多对一链接,但我不知道如何。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    由于 Order 听起来它的商品数量相对较少,因此最简单的可能只是商品 ID 列表:

    var OrderSchema = new mongoose.Schema({
        items: [{type: mongoose.Schema.Types.ObjectId, ref: 'Item'}]
    });
    
    var ItemSchema = new mongoose.Schema({
        price: Number,
        quantity: Number
    });
    

    大多数 UI 不会在单个 POST 函数中构建整个订单,因此最好允许创建订单,然后通过 order.items.push(itemId) 单独向其中添加商品。

    【讨论】:

    • 所以我会为订单和项目做类似“app.post('/uri',api.function)”的事情,然后在api(控制器)中有一个回调函数创建项目以将项目推送到订单?
    • 是的,虽然创建一个项目听起来像是属于一个单独的库存管理应用程序而不是创建一个电子商务活动的订单。抱歉,我一般无法指导您完成应用程序设计。这个网站是针对特定编程问题的。
    • 这是否要求 ItemSchema 与 OrderSchema 在同一个文件中?我想知道即使在另一个文件中定义了 ItemSchema 是否会解决 ref 字段。
    • 不,模式可以在任何文件中定义,没关系。相同或不同都会起作用。不过,对于始终如一且不出所料,一个好的经验法则是每个文件只有一个架构。
    • 正是我想要的。 mongoDB 站点上的文档解释了它是如何工作的,但它们没有提供语法。至少我似乎找不到它。
    猜你喜欢
    • 2020-09-19
    • 2015-07-01
    • 1970-01-01
    • 2021-06-22
    • 2021-08-05
    • 2018-07-09
    • 1970-01-01
    • 2020-01-24
    相关资源
    最近更新 更多