【问题标题】:How to include schema of other model in nodejs?如何在nodejs中包含其他模型的架构?
【发布时间】:2018-04-10 18:47:54
【问题描述】:

我有 2 个架构 products 和 orders 如下所示:

products.js

var mongoose = require('mongoose');
   const productsSchema = mongoose.Schema({
    prod_name : {
        type: String,
        required: true
    },
    qty : {
        type: Number,
        required: true
    },
    price : {
        type: Number,
        require: true
    }
});
mongoose.model('Products', productsSchema);

orders.js

const mongoose = require('mongoose');
const ProductsModel = mongoose.model('Products');

const OrdersSchema = mongoose.Schema({
    order_date : {
        type: Date,
        required: true
    },
    sum : {
        type: Number,
        required: true
    },
    products: [ProductsModel]
});

const Orders = module.exports = mongoose.model('Orders', OrdersSchema);

app.js 我在哪里引用文件

var express = require('express');
var mongoose = require('mongoose');
var app = express();

const contact = require('./routes/contacts');
const product = require('./routes/products');
const order = require('./routes/orders');

mongoose.connect('mongodb://localhost:27017/contactlist')
const port = 3000;
app.use('/contacts', contact);
app.use('/products', product);
app.use('/orders', order);
app.listen(port, () => {
    console.log('Server started at port ' + port);
})

在上面的orders.js 我试图包含产品架构及其给出的以下错误

MissingSchemaError: Schema hasn't been registered for model "Products".

我想将产品数组存储在相同的订单模式中。

我哪里做错了?

【问题讨论】:

  • 你能展示你整合products.js和orders.js的代码吗?
  • 用最新的products.js和orders.js更新了问题
  • 请说明您在哪里包含这些文件
  • 请检查更新的问题

标签: node.js mongodb


【解决方案1】:

要拥有可重用的猫鼬模型,您应该将架构导出为模型 像下面的代码:

const mongoose = require('mongoose');

const productsSchema = mongoose.Schema({
    prod_name : {
        type: String,
        required: true
    },
    qty : {
        type: Number,
        required: true
    },
    price : {
        type: Number,
        require: true
    }
});


module.exports = mongoose.model('Products', productsSchema);

【讨论】:

  • 但是如何在订单模式中声明products数组
  • @Rocky 阅读了 mongo 中的 population 并阅读了此 link。
【解决方案2】:

问题可能是您忘记使用 new 创建一个新的 Schema。

尝试改变:

const productsSchema = mongoose.Schema

收件人:

const productsSchema = new mongoose.Schema

在orders.js 中,您将能够获得这样的架构:

mongoose.model('Products').schema

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多