node.js - 如何在 mongooseJS 中相互连接模式?

标签 node.js mongodb mongoose schema

基本上我想要实现的目标如下: 在我的 iOS 应用程序中,可以扫描 QR 码来获取特定休息室的 ID,并将其 JSON 数据(目前只有 ID 和名称)保存在 MongoDB 中。

每个休息室都可以(但不是必须)将产品添加到其休息室,以便最终在扫描二维码后,客户能够看到提供哪些产品。

产品目前仅包含名称和 imageURL,但不包含价格,因为价格可能会有所不同并由休息室所有者设置。因此,同一种产品的价格可能会有所不同。

我想知道,实现该方法的架构的正确和最佳方法是什么,以便我可以轻松地获取特定休息室的所有产品(也许可以根据其 ID)。

到目前为止我得到了什么:

休息室.js:

const mongoose = require('mongoose');

const loungeSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true }
});

module.exports = mongoose.model('Lounge', LoungeSchema);

产品.js

const mongoose = require('mongoose');

const productSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true },
    imageURL: { type: String, required: true, unique: true }
});

module.exports = mongoose.model('Product', productSchema);

最佳答案

基本上你可以使用mongoose populate 。您可以通过将产品存储在单独的集合中并基本上使用休息室的 _id 填充休息室架构上的数组来实现此目的,让我向您展示一个示例:

您的休息室架构将是这样的

const mongoose = require('mongoose');

const loungeSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true }
    products: [type: Schema.Types.ObjectId, ref: 'Products' ]
});

module.exports = mongoose.model('Lounge', loungeSchema);

以及您的产品架构

const mongoose = require('mongoose');

const productSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true },
    imageURL: { type: String, required: true, unique: true }
});

module.exports = mongoose.model('Product', productSchema);

保存创建休息室时,只需将产品的 _id 添加到休息室架构之外的 products 数组中。 所以基本上你找到产品并检索它的 _id。

要运行查找查询,如下所示:

lounge.find({}).populate('products').exec();

产品数组将包含每个休息室的相关产品

关于node.js - 如何在 mongooseJS 中相互连接模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58064916/

相关文章:

javascript - APE 和 Node.js 之间的主要区别是什么?

node.js - 无法从error.message中提取错误消息

javascript - 扩展 Node.js 中模块的功能

javascript - 异步减少返回 promise

javascript - 两个集合mongodb之间的关系

javascript - 通过 Href 的 findByIdAndRemove 给我 404

javascript - 在用 getter 转换后,在 Mongoose 中抑制转换为 Date

node.js - 如何在 mongoDB 中将 $subtract 与文档数组一起使用

javascript - 删除 object.property 不适用于 Mongoose 创建的对象

node.js - 关于 Mongoose 填充关系一个字符串字段