模特问题猫鼬

时间:2017-09-22 19:55:29

标签: node.js mongodb mongoose

这是型号: /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;

这是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);

});

这是我收到的错误:

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

非常感谢任何想法

干杯,

1 个答案:

答案 0 :(得分: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();