2

我正在尝试在我的数据库中使用新架构,但在尝试实例化它时出错。我还有另外两个模式(在文件夹“models”中的两个不同模型文件中),它们完美无缺,并且它们的形状相同。错误消息是什么意思,我可以做些什么来防止它发生?

我认为控制器中的其他代码没有任何问题,因为我尝试使用相同的语法在同一位置实例化另一个数据库模型,并且效果很好。

我得到的错误: 500 TypeError: object is not a function at Schema.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)

对不起下面的所有代码。我不知道在这种情况下我可以排除什么。无论如何,提前谢谢!

控制器文件:

module.exports = function(app, service) {
    var imageModel = service.useModel('image');

    app.post('/file-upload', function(req, res, next) {

           // other code...

        var imageAdd = new imageModel.ImgSchema();

    }
}

mongodb 模型(models/image.js):

module.exports = function (mongoose) {

    var modelObject = {};

    var Schema = mongoose.Schema,
        ObjectId = Schema.ObjectId;

    var ImgSchema = new Schema({
        name : String,
        size : Number,
        type : String
    });

    modelObject.ImgSchema = ImgSchema;
    modelObject.Images = mongoose.model('Images', ImgSchema);

    return modelObject;
};

对于 mongodb,我使用的是服务文件(service.js):

var environment;
var mongoose = require('mongoose');

module.exports.init = function(env, mongoose) {
    environment = env;
    mongoose = mongoose;
};

module.exports.useModel = function (modelName) {
    var checkConnectionExists = (mongoose.connection.readyState === 1 || mongoose.connection.readyState === 2);
    if(!checkConnectionExists)
        mongoose.connect(environment.db.URL);
    return require("./models/" + modelName)(mongoose);
};

module.exports.useModule = function (moduleName) {
    return require("./modules/" + moduleName);
};
4

1 回答 1

1

modelObject.ImgSchema 不是构造函数,但是 modelObject.Images 是。

var imageAdd = new imageModel.Images();

我可能会将图像重命名为图像

于 2012-04-18T17:27:41.240 回答