2

データベースで新しいスキーマを使用しようとしていますが、インスタンス化しようとするとエラーが発生します。他に 2 つのスキーマ ("models" フォルダー内の 2 つの異なるモデル ファイル) があり、これは完璧に機能し、同じように形作られています。エラー メッセージは何を意味し、エラーが発生しないようにするにはどうすればよいですか?

同じ構文を使用して同じ場所で別の db モデルをインスタンス化しようとしたため、コントローラーの他のコードに問題はないと思いますが、それは正常に機能します。

私が得るエラー: 500 TypeError: object is not a function at Schema.CALL_NON_FUNCTION_AS_CONSTRUCTOR (ネイティブ)

以下のすべてのコードで申し訳ありません。この場合、何を除外できるかわかりませんでした。とにかく、事前に感謝します!

コントローラーファイル:

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 に答える