我正在Node中创建第一个项目,有人告诉我,创建具有所有常用功能的.js
文件是一个好习惯
例如,假设我想向猫鼬查询某些东西,以获取数据或更新数据,那么我应该在其中应该执行所有操作的地方创建一个js
文件。
考虑我有一个看起来像这样的猫鼬模式
const mongoose = require('mongoose')
const userSchema = new mongoose.Schema({
fullName: String,
email: String,
passowrd: String,
image: String
})
module.exports = mongoose.model('User', userSchema);
要执行诸如检查用户是否存在于Db中的功能,我在名为function folder
的助手my_db_query.js
中创建了一个.js文件,在其中导入了我的猫鼬模式并做了许多常用功能与我的模式(或猫鼬中的其他模式)交互的
Const user = requeire(./../model/user.js)
//other schema
function findByEmail (email) {
return User.findOne({email: email}).then((currentUser) => {
return currentUser
}
function updateUser (updatedData) {
//to update user
}
function deleteUser (user) {
//to delete a user
}
现在,假设我有一个需要使用它们的文件夹路由。
route.delete("/:delete", isAdmin, (req, res) => {
})
route.get("/:id", (req, res) => {
})
route.put(/:id, isAdmin, (req, res) => {
})
问题:如何立即导出所有功能以及如何在我的路线文件中导入和使用它们
答案 0 :(得分:3)
我如何一次导出所有功能?
module.exports = { findByEmail, updateUser, deleteUser };
只需导出包含函数的对象。
以及如何在我的路线文件中导入和使用它们?
您可以解构导出的对象:
const { findByEmail, updateUser, deleteUser } = require("./my_db_query");
findByEmail("test@example.com").then(/*...*/).catch(/*...*/);
答案 1 :(得分:1)
在.js
文件中,您可以导出要在代码库其他部分中使用的任何功能。以下是.js
文件底部的内容示例。它将导出您定义的3个功能。
module.exports = {
findByEmail,
updateUser,
deleteUser
}
然后,您可以在路线文件中导入文件/功能。在路由文件的顶部,您需要包括以下内容。在下面的示例中,commonMethods.js
是.js
文件的文件名,所有文件都位于同一目录中。
const commonMethods = require('./commonMethods.js')
然后您可以使用以下任何常用方法:commonMethods.updateUser(updatedData)
答案 2 :(得分:0)
一次导出所有功能:
我更喜欢将所有内容封装在一个对象内。
const index = {};
index.findByEmail = function() { ... }
index. updateUser = function() { ... }
index. deleteUser = function() { ... }
module.export = index;
导入1
const lib = require('./lib.js');
导入2 const {findByEmail,updateUser,deleteUser} = required('./ lib.js');