首页 文章

模特问题猫鼬

提问于
浏览
0

This is the model: /doc/proModel.js

module.exports = function (mongooseModels) {
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/DocTest');
var Schema = mongoose.Schema;

var ProSchema = new Schema({
    _id: {type: Schema.Types.ObjectId},
    Titre: {
        type: String,
        //required: true
    },
    Prenom: {
        type: String,
        //required: true
    },
    Nom: {
        type: String,
        //required: true
    }
});

var proModel = {
    Pro: mongoose.model("Pro", ProSchema)
};

return proModel;

This is the main.js:

var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/DocTest');
var proModel = require('./doc/proModel');

var pro1 = new proModel().Pro({
_id :{type: new mongoose.Types.ObjectId()},
Nom: "Ok"
});

pro1.save(function (err) {
if (err) return handleError(err);

});

This is the error I'm getting:

发生异常:错误ReferenceError:在Model的/Users/maxime/Documents/Projets/Test/main.js:11:21中未定义handleError . $ wrapCallback(/ Users / maxime / Documents / Projets / Test / node_modules / mongoose /lib/model.js:3835:16)/Users/maxime/Documents/Projets/Test/node_modules/mongoose/lib/services/model/applyHooks.js:167:17 at _combinedTickCallback(internal / process / next_tick.js :73:7)在ontimeout的timeout.Module.runMain [as _onTimeout](module.js:606:11)的process._tickCallback(internal / process / next_tick.js:104:9)中(timers.js:386: 14)在Timer.listOnTimeout的tryOnTimeout(timers.js:250:5)(timers.js:214:5)

Any idea would be greatly appreciated

Cheers,

1 回答

  • 0

    所以有多个错误

    第一个 handleError(err) ,您的函数 handleError 不存在 .

    第二,你保存模型的方式是错误的 . 以下是我编写代码的方法:

    /doc/proModel.js

    const mongoose = require('mongoose');
    const Schema = mongoose.Schema;
    
    const ProSchema = new Schema({
        _id: {type: Schema.Types.ObjectId},
        Titre: {
            type: String,
            //required: true
        },
        Prenom: {
            type: String,
            //required: true
        },
        Nom: {
            type: String,
            //required: true
        }
    });
    
    module.exports = mongoose.model("Pro", ProSchema);
    

    /main.js

    const mongoose = require('mongoose');
    const ProModel = require('./doc/proModel');
    
    mongoose.connect('mongodb://127.0.0.1/DocTest');
    
    const pro1 = new ProModel({
        _id : new mongoose.Types.ObjectId(),
        Nom: "Ok"
    });
    
    const handleError = function() {
        console.error(err);
        // handle your error
    };
    
    pro1.save(function (err) {
        if (err) return handleError(err);
    });
    

    根据模型组织,这是我喜欢的应用程序结构

    /models
      pro-model.js
      users-model.js
      books-model.js
      orders-model.js
      index.js
    
    // /models/index.js file
    const fs = require('fs');
    
    fs.readdirSync(__dirname)
    .forEach((file) => {
        if (file.endsWith("-model.js")) {
            const M = require(`./${file}`);
            exports[M.modelName] = M;
        }
    });
    

    那么如果你想获得你所有的模型你可以做到:

    const models = require('./models');
    
    new models.Pro({
        _id : new mongoose.Types.ObjectId(),
        Nom: "Ok"
    })
    .save();
    

相关问题