javascript - 如何在 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');
解决方案
这应该有效:
在一个文件中导出
module.exports = { Db, Beacon };
然后,导入另一个文件
const { Db, Beacon } = require('path-to-db.js');
// use them
Db.doSomething();
Beacon.doSomethingElse();
请注意,这使用了ECMAS 6 解构分配( MDN上的附加信息)
推荐阅读
- python - 没有它,如何让 mpld3 显示与 matplotlib 相同的图形?
- python - gspread update_cells writes to wrong place
- html - 如何将所有设备的 hr 行保持在同一行?
- javascript - 为什么异步函数中的连续 setState 调用没有批处理?
- java - JavaFX 12 中缺少包 javafx.embed.swing?
- android - 来自 Activity 的应用小部件对话框未在 Redmi 手机中显示
- java - Lambda 在 forEach 中使用外部连接变量
- dotnetnuke - 内页在 DNN9 中获取本地主机别名
- python - Python :: Cassandra session.execute() 语句中的输入错误没有可行的替代方案
- php - 不下载正则表达式url的文件