您好,欢迎阅读本周的文章。今天,我们将讨论三个 npm 包。其中两个将非常简要地解释(mongoose 和 morgan),第三个是我们将重点介绍的(mongoose-morgan)。

Mongoose 是一个用于 node.js 应用程序的 MongoDB 建模工具。有了它,我们使用面向对象的 JavaScript 编程来创建 MongoDB 模式和模型。它还允许我们直接从 node.js 应用程序的后端交互和查询数据库。在下面的示例中,我们创建了一个模式,然后使用该模式创建一个模型,最后将其导出以在我们的应用程序代码中使用。

const MONGOOSE = require('mongoose');
const SCHEMA = MONGOOSE.Schema; 
// create User Schema
const USER_SCHEMA = new SCHEMA({  
   name: {    
       type: String,    
       required: true  
   },  
   email: {    
       type: String,   
       required: true,    
       unique: true  
   },  
   password: {    
       type: String,    
       required: true  
   },  
   avatar: {    
       type: String  
   },  
   date: {    
       type: Date,    
       default: Date.now()  
   }
}); 

// Define Model
const USER_MODEL = MONGOOSE.model('user', USER_SCHEMA);
// Export model
module.exports = USER_MODEL;

进入全屏模式 退出全屏模式

所以,在我们进一步破坏这件事之前,让我们先谈谈摩根。 Morgan 是 node.js 应用程序的 HTTP 请求记录器。它在应用程序的“请求-响应”生命周期的请求周期中充当中间件。这意味着它在您的应用程序 HTTP 请求中起着障碍作用。每次向您的服务器发出请求时,摩根都会以您选择的格式将其记录到控制台。 Morgan 有许多可用的格式,但我使用“tiny”格式,它只记录发出请求的 URL、响应的状态代码和响应所需的时间。这是一个简单的例子:

// Require morgan in your server.js or index.js after npm install
const MORGAN = require('morgan');

// Whatever code you have...

// Right before your router and routes initialization, use morgan.
MORGAN('dev');

// Example route, router initialization
APP.use('/api/profiles/', require('./routes/api/profiles'));
APP.listen (PORT, () => console.log('Working...'));

进入全屏模式 退出全屏模式

对于上面的示例,morgan 每次发出请求时都会在控制台中记录如下内容:

POST /api/users 200 195 - 720.322 ms

因此,它为我们提供了请求的方法、请求的资源、状态码以及发送响应所需的时间。有一种名为“dev”的格式也可以为您提供日期。其他格式也允许您提取发出请求的远程地址。

现在......当天的失败者......猫鼬摩根!

我认为现在你已经很好地猜到了这个包的作用。这个巧妙的包为您提供了一种最简单的方法来跟踪对您的应用程序发出的所有请求,不仅可以记录它们,还可以将它们保存到您想要的数据库中。例如,我使用这个包的方式是在不使用任何繁重的分析工具的情况下检查我的网站上最需要哪些资源。不仅如此,我还可以看到哪些资源需要更长时间才能加载或更容易崩溃。这是我的代码中的一个示例:

// This is file is logger.js
const MONGOOSE_MORGAN = require('mongoose-morgan');
const CONFIG = require('config');

// Mongoose-morgan
const DB = CONFIG.get('mongoURI');
const MORGAN = MONGOOSE_MORGAN(  
      // DB object with connection string and target collection
      {   
       collection: 'request-logs',    
       connectionString: DB  
      },
      // Options object. Custom preferences
      {},
      // Logging format
      'tiny'
); 

// Export Middleware
module.exports = MONGO_MORGAN;

进入全屏模式 退出全屏模式

简单......我们需要 mongoose-morgan 然后 config 来检索所需的配置变量(您也可以使用 dot-env)。我们继续检索所有要保存的请求的数据库 URI,然后我们初始化一个包含 mongoose-morgan 调用的变量。 MONGOOSE_MORGAN 接受三个参数:

  • 定义数据库集合和连接字符串的对象。

  • 在这个对象之后,我们传递另一个具有任何自定义首选项的对象,更多的是在 mongoose-morgan@npm 中。

  • 最后传入你想要的日志格式并关闭调用。

最后导出中间件并将其导入您的服务器,就像我们对 morgan 包所做的那样:

// Server.js

// import
const MONGO_MORGAN = require('./middleware/logger.js');

// Call before router, route instance
APP.use(MONGO_MORGAN);

// Routes and APP.listen below.

进入全屏模式 退出全屏模式

之后,您将看到您定义的集合已添加到数据库中,并且所有服务器请求都记录到其中。比以往任何时候都更轻松地为您提供影响重大的数据。

这是一个功能强大的工具,可为您提供有关应用程序的营销和性能相关数据,并随意保存。

有趣的事实:

  • Mongoose 每周有 800,000+ 次下载

  • 摩根每周有 2,000,000+ 次下载

  • Mongoose-morgan 每周只有 200-400 次下载。

我希望你能利用这些信息并战略性地使用它。那是所有人!

请务必与您的同事和其他开发人员分享。

下周见,注意安全!

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐