Динамическая схема Мангуста из объекта JSON

#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);
};