在Node Express中导出和导入

时间:2018-12-23 22:12:57

标签: javascript node.js mongodb mongoose

我正在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) => {
})

问题:如何立即导出所有功能以及如何在我的路线文件中导入和使用它们

3 个答案:

答案 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');