Ich versuche, eine E-Commerce-Website auf Node.js mit einer mongoDB Datenbank basiert zu bauen, und ich habe Probleme über einige Datenbank-Design oder eine Logik begegnet mir fehltMongoDB Datenbank-Design für Produkte und Pakete
Zusammengefasst up, ich habe Product
, die Preis, Name, Beschreibung etc ... und Bundle
enthalten, die eine Reihe von Produkten (per Referenz) enthält. Das Hauptproblem kommen, wenn ich bestellen muß, kann ich nicht Product
UND Bundle
zusammen bekommen ...
So habe ich bereits ein Product
Schema:
const productSchema = new mongoose.Schema({
file: {
type: String,
required: true,
},
name: {
type: String,
required: true,
},
description: {
type: String,
required: true,
},
preparation: String,
allergics: {
type: Array,
required: true,
},
price: {
type: Number,
required: true,
},
// More fields
});
module.exports = mongoose.model('Product', productSchema);
Und ein Bundle
Schema, das ref Product
enthält (ein Bündel mehrere Produkte enthält):
const bundleSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
price: {
type: Number,
required: true,
},
itemsId: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Product',
required: true,
}],
description: String,
reduction: {
type: Number,
min: 0,
default: 0,
max: 100,
},
});
module.exports = mongoose.model('Bundle', bundleSchema);
Also, wenn ein Benutzer ein Bündel Aufträge oder ein einzelnes Produkt, verwende ich dieses Schema:
const orderSchema = new mongoose.Schema({
orderedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
},
articlesId: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Product',
},
],
itemsNumber: {
type: Array,
required: true,
},
amount: Number,
orderedAt: Date,
placeToShip: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Place',
},
});
module.exports = mongoose.model('Order', orderSchema);
Wie Sie sehen können, verweisen ich nur Product
, aber ich möchte Product
UND Bundle
, ich weiß nicht, verweisen, wenn dies möglich ist, oder wenn dies der falsche Weg, um die Datenbank so zu gestalten, .
Sorry, wenn der Beitrag ein bisschen lang ist, aber ich versuche, so klar wie möglich zu sein! Danke vielmals.
Ok vielen Dank, ich werde das heute Abend versuchen, Sie auf dem Laufenden zu halten! – antoine2vey
Hat das funktioniert? Versuchst du es noch? –