无法使用模块导出的 return 方法
Cannot return method using module exports
我正在尝试制作一个 database
文件,该文件 为 mongoose (MongoDb)
提供连接 n、模型等。
So when I return the Mongoose Model, the create method becomes
"undefined".
database.js
//model connection
exports.MongoModel = async function ({connectionName, collection, schema}){
//get connection data
const databaseData = connectionsArray[connectionName];
//create url
const mongoUrl = `${dbUrl}${databaseData.databaseName}`;
//connection
const connection = Mongoose.createConnection(mongoUrl, databaseData.options);
//model with schema
const Model = connection.model('files',schema);
console.log(Model.create);// displays [Function: create] in console
//return model
return Model
}//MongoModel ends
导入其他文件时
FileUploads.js
const { MongoModel } = require('@src/config/database');
const FilesModel = MongoModel({connectionName:'files', collection: 'files', schema: FilesSchema});
console.log(FilesModel); // Displays Promise { Model { files } }
console.log(FilesModel.create); // Displays undefined
注意:我是这个平台的新手,所以请原谅我的打字错误。
好吧,这样试试:
//model connection
function MongoModel({connectionName, collection, schema}){
//get connection data
const databaseData = connectionsArray[connectionName];
//create url
const mongoUrl = `${dbUrl}${databaseData.databaseName}`;
//connection
const connection = Mongoose.createConnection(mongoUrl, databaseData.options);
//model with schema
const Model = connection.model('files',schema);
console.log(Model.create);// displays [Function: create] in console
//return model
return Model
}//MongoModel ends
module.exports = { MongoModel }
您需要导出一个包含 MongoModel
的对象。现在你应该可以在 import 语句中解构它了。
我看不出有理由在这里使用 async
在您的代码中 'MongoModel' 引用了一个 async function which always returns a Promise。这就是为什么在将对象记录到控制台时会看到 Promise { Model { files } }
的原因。您可以做的两件事是:
选项 1:从函数声明中删除 'async' 关键字。这样你的函数 returns 你的模型对象而不是承诺。
方案二:添加回调获取promise返回的数据如下图:
MongoModel({connectionName:'files', collection: 'files', schema: FilesSchema})
.then((FileModel) => {
console.log(FileModel.create); // should display [Function: create]
});
我正在尝试制作一个 database
文件,该文件 为 mongoose (MongoDb)
提供连接 n、模型等。
So when I return the Mongoose Model, the create method becomes "undefined".
database.js
//model connection
exports.MongoModel = async function ({connectionName, collection, schema}){
//get connection data
const databaseData = connectionsArray[connectionName];
//create url
const mongoUrl = `${dbUrl}${databaseData.databaseName}`;
//connection
const connection = Mongoose.createConnection(mongoUrl, databaseData.options);
//model with schema
const Model = connection.model('files',schema);
console.log(Model.create);// displays [Function: create] in console
//return model
return Model
}//MongoModel ends
导入其他文件时
FileUploads.js
const { MongoModel } = require('@src/config/database');
const FilesModel = MongoModel({connectionName:'files', collection: 'files', schema: FilesSchema});
console.log(FilesModel); // Displays Promise { Model { files } }
console.log(FilesModel.create); // Displays undefined
注意:我是这个平台的新手,所以请原谅我的打字错误。
好吧,这样试试:
//model connection
function MongoModel({connectionName, collection, schema}){
//get connection data
const databaseData = connectionsArray[connectionName];
//create url
const mongoUrl = `${dbUrl}${databaseData.databaseName}`;
//connection
const connection = Mongoose.createConnection(mongoUrl, databaseData.options);
//model with schema
const Model = connection.model('files',schema);
console.log(Model.create);// displays [Function: create] in console
//return model
return Model
}//MongoModel ends
module.exports = { MongoModel }
您需要导出一个包含 MongoModel
的对象。现在你应该可以在 import 语句中解构它了。
我看不出有理由在这里使用 async
在您的代码中 'MongoModel' 引用了一个 async function which always returns a Promise。这就是为什么在将对象记录到控制台时会看到 Promise { Model { files } }
的原因。您可以做的两件事是:
选项 1:从函数声明中删除 'async' 关键字。这样你的函数 returns 你的模型对象而不是承诺。 方案二:添加回调获取promise返回的数据如下图:
MongoModel({connectionName:'files', collection: 'files', schema: FilesSchema})
.then((FileModel) => {
console.log(FileModel.create); // should display [Function: create]
});