我正在尝试在我的数据库中使用新架构,但在尝试实例化它时出错。我还有另外两个模式(在文件夹“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);
};