データベースで新しいスキーマを使用しようとしていますが、インスタンス化しようとするとエラーが発生します。他に 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);
};