首页 > 解决方案 > 如何在 node.js 中导出许多猫鼬模型模块

问题描述

我有2个这样的模型

const Db = mongoose.model('db', dbSchema); 
const Beacon = mongoose.model('beacon', dbSchema2);

现在我想导出它们。首先我导出 Db,一切都很好。我可以用它做一个 HTTP 请求。

module.exports = Db;

但是,当我尝试将第二个导出到外面时,它会停止运行。下面的函数将返回一个空白 JSON 文件作为响应。

module.exports = Db;
module.exports = Beacon;

这也行不通。它返回一个错误处理程序,说明处理程序中的所有函数都不是函数。

module.exports = {
Db, Beacon
}

这是我导入模型的文件上的功能。

router.get('/data/:id', function(req, res, next) {
    Db.findOne({ _id: req.params.id }).then(function(db) { 
        res.send(db);
    });
}

处理程序的返回是Db.findOne 不是函数。

有什么办法可以同时导出它们吗?谢谢你。这是在另一个文件上的导入

const Db = require('./db.js');
const Beacon = require('.db.js');

标签: javascriptnode.jsmongodbmongoosemodule

解决方案


这应该有效:

在一个文件中导出

module.exports = { Db, Beacon };

然后,导入另一个文件

const { Db, Beacon } = require('path-to-db.js');

// use them
Db.doSomething(); 
Beacon.doSomethingElse();

请注意,这使用了ECMAS 6 解构分配( MDN上的附加信息)


推荐阅读