#node.js #mongodb #mongoose
Вопрос:
Я новичок в NodeJS и пытаюсь создать серверную часть, которая работает как управление продуктами.
Итак, у меня есть пара пользователей и пара продуктов. И у каждого пользователя есть свой собственный набор продуктов с разными запасами. Как бы мне это удалось сделать?
Это моя модель пользователя
import mongoose from 'mongoose'
const { Schema } = mongoose
const userSchema = Schema({
username: {
type: String,
unique: true,
allowNull: false,
required: true,
lowercase: true,
minlength: 5,
maxlength: 20
},
password: {
type: String,
required: true,
allowNull: false,
minlength: 5
},
buddy: {
buddyId: {
type: Number,
},
buddyHash: String,
firstName: String,
lastName: String,
},
products: [{
type: Schema.Types.ObjectId,
ref: 'product',
**stock: Number**
}],
orders: [{
type: Schema.Types.ObjectId,
ref: 'order',
}]
}, { timestamps: true, strict: true })
const UserModel = mongoose.model('user', userSchema)
export default UserModel
Работает ли выделенный «запас»?
Это моя модель продукта
import mongoose from 'mongoose'
const {Schema} = mongoose
const productSchema = Schema({
name: String,
formattedName: String,
ean: Number,
producerArtNr: Number,
partnerArtNr: Number,
partner: String,
purchasePrice: Number,
salesPriceInkVat: Number,
salesPriceExVat: Number,
margin: Number,
profit: Number,
brand: String,
category:[{
type: Schema.Types.ObjectId,
ref: 'categories',
}],
users:[{
type: Schema.Types.ObjectId,
ref: 'user',
}]
}, {timestamps: true, strict: true})
const ProductModel = mongoose.model('product', productSchema)
export default ProductModel
I need to be able to update the stock of each product that is individually different depending on the user
My UserController
const registerUser = async (request, response) => {
const hashedPassword = await bcrypt.hash(request.body.password, 12)
const user = new UserModel({
username: request.body.username,
password: hashedPassword,
buddy:{
buddyId: request.body.buddy.buddyId,
buddyHash: request.body.buddy.buddyHash,
firstName: request.body.buddy.firstName,
lastName: request.body.buddy.lastName,
},
});
try {
const product = await ProductModel.findById({_id: request.body.products.id})
product.users.push(product)
user.products = product
await product.save()
const databaseResponse = await user.save();
response.status(201).send(databaseResponse);
} catch (error) {
response.status(500).send({ message: error.message });
}
};