猫鼬:Create()不会创建文档

时间:2020-04-12 20:26:48

标签: node.js mongodb mongoose

你好,这是我第一次发布问题。

因此,基本上,我正在构建一个用于管理汽车的API(将其作为培训,以更好地构建API)。我与D的连接是使用一个单例完成的,该单例被服务器调用一次,并且mongo promises是全局的(现在可以正常使用)
我有我的模特:

import mongoose, {Schema} from "mongoose";
import mongooseUniqueValidator from "mongoose-unique-validator"; 

class Voiture{
    initSchema(){
        const schema = new Schema({
            Marque:{
                type: String,
                require:true,
            },
            Modele:{
                type: String,
                require:true,
            },
            Année:{
                type: Number,
                require:true,
            },
            Energie:{
                type: String,
                require:true,
            },
            Boite_De_Vitesse:{
                type: String,
                require:true,
            },
            couleur_exterieure:{
                type: String,
                require:true,
            },
            couleur_intérieur:{
                type: String,
            },
            nombre_De_Portes:{
                type:  Number,
            },
            nombre_De_Places:{
                type: Number,
            },
            Prix:{
                type: Number,
            },
            Etat:{
                type: String,
                require: true,
            },      
            Kilométrage:{
                type: Number,
            },
            prix_location:{
                type: Number,
                require:true,
            } 
            },{timestamp: true});
            schema.plugin(mongooseUniqueValidator);
            mongoose.model("voitures", schema);    
    }
    getInstance() {
        this.initSchema();
        return mongoose.model("voitures");
      }
}

export default Voiture;

,我还附加了服务和控制器 我可以在mongoDB数据库中获取所有文档,但无法创建文档

这是我的服务

import voiture from "../models/Voiture"
import mongoose from "mongoose"

class VoitureService{
    constructor(){
        this.model = new voiture().getInstance();
        this.getAll = this.getAll.bind(this);
        this.insert = this.insert.bind(this);
    }

    /**
     * GET All voiture
     */
    async getAll(query){
        let {skip, limit} = query;
        skip = skip ? Number : 0;
        limit =  limit ? Number : 10;

        delete query.skip;
        delete query.limit;

        if(query._id){
            try {
                query._id = new mongoose.mongo.ObjetId(uery._id);
            } catch (error) {
                console.log("not able to generate mongoose id with content", query._id);  
            }
        }

        try {
            let items = await this.model
            .find(query)
            .skip(skip)
            .limit(limit)
        let total = await this.model.countDocuments();
        return {
            error: false,
            statusCode: 200,
            data: items,
            total
          };
        } catch (errors) {
            return {
                error: true,
                statusCode: 500,
                errors
            };
        }
    }



    /**
     * Insert a car in the Database
     */

    async insert(data){
        console.log("line 60");
       try {
           console.log("line 62");
           let item = await this.model.create(data, function (err) {
               console.log("line 64");
               if (err) return handleError(err);
               // saved!
               console.log("line 67");
             });
           if (item){
               console.log("line 70");
             return {
               error: false,
               item
             };
             }
         } catch (error) {
           console.log("error", error);
           return {
             error: true,
             statusCode: 500,
             message: error.message || "Not able to create item",
             errors: error.errors
           };
         }
       }
}

这是我的控制器

 async addCar(req, res){
        let response = await this.service.insert(req.body)
        if (res.error) return res.status(res.statusCode).send(response);
        return res.status(201).send(response);
      }

我尝试记录该项目,但它给了我 undefined

谢谢大家!

Salayna

1 个答案:

答案 0 :(得分:0)

您可以遵循此代码

// At Frist, You import **Voiture** Model Then use the model
async insert(data){
         console.log("line 60");
        try {
            console.log("line 62");
            let item = await Voiture.create(data, function (err) {
                console.log("line 64");
                if (err) return handleError(err);
                // saved!
                console.log("line 67");
              });
            if (item){
                console.log("line 70");
              return {
                error: false,
                item
              };
              }
          } catch (error) {
            console.log("error", error);
            return {
              error: true,
              statusCode: 500,
              message: error.message || "Not able to create item",
              errors: error.errors
            };
          }
        }