我有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".
我想将产品数组存储在相同的订单架构中。
我在哪里做错了?
答案 0 :(得分:0)
要拥有可重复使用的mongoose模型,您应该将模式导出为模型 如下代码:
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);
答案 1 :(得分:0)
问题可能是您忘记使用new
创建新架构。
尝试更改:
const productsSchema = mongoose.Schema
致:
const productsSchema = new mongoose.Schema
在orders.js
中,您将能够获得如下架构:
mongoose.model('Products').schema