#node.js #mongodb #mongoose
Вопрос:
У меня есть объект JSON, ничего сложного, это просто простые ключи и значения, а также ссылка на добавленные изображения в массиве, модель выглядит так:
{
"Model": "VolkSwagen",
"Year": 1995,
"Fuel Type": "Diesel",
"Colour": "Black",
"Nr. of KM": "123",
"UserCategory": "5123.32",
"Data": "2021/05/04",
"userId": "108982948403943427748",
"AddedImages": [
"uploads/1617923198614_image2.jpg",
"uploads\1617923201585_image5.jpg"
]
}
Основная проблема заключается в том, что эти ключи и значения добавляются пользователями, поэтому они динамичны. Я хочу сохранить эти значения в качестве продукта в своей базе данных MongoDB, но я не знаю, как создать из нее схему. Я пытался использовать пакет npm generate-schema и так далее, но он не работал с моей коллекцией, в нем были созданы только вложенные объекты.
Мой код
import GenerateSchema from 'generate-schema'
import mongoose from "mongoose";
export const generateProductSchema = (product) => {
const productSchema = GenerateSchema.mongoose(product)
return mongoose.model("Product", productSchema);
};
export const uploadProduct = (req,res) => {
const ProductModel = generateProductSchema(req.body)
const product = new ProductModel(req.body)
product.save((err) => {
if(err) return res.status(400).json({ success: false, err });
res.status(200).json({ success:true });
})
};
Заранее спасибо 🙂
Ответ №1:
Я выяснил, в чем была проблема. Я отправил от своего клиента уже проанализированный файл JSON, но схема генерации принимает только объекты. Таким образом, вам в основном нужно отправить свой объект, а схема генерации сделает все остальное
Код
import gs from 'generate-schema'
import mongoose from "mongoose";
export const generateProductSchema = (product) => {
const productSchema =gs.mongoose(product);
return mongoose.model("Product", productSchema);
};