📜  如何在 Node.js 中实现访客计数器?

📅  最后修改于: 2022-05-13 01:56:55.451000             🧑  作者: Mango

如何在 Node.js 中实现访客计数器?

我们将在nodeJS中使用expressmongoose实现访客计数器。使用mongoose将计数存储在MongoDB数据库中的好处是,当我们重新启动服务器时,计数不会丢失。每次浏览器访问该页面时,访问者的数量都会增加一 (1)。让我们一步一步来。

第 1 步:创建一个“ app.js ”文件并使用npm初始化您的项目。

npm init

第 2 步:使用npm安装expressmongoose

npm install express
npm install mongoose

Express包将帮助我们创建服务器并定义GET请求的路由。 Mongoose是一个用于 MongoDB 和 NodeJS 的对象数据建模库,它可以帮助我们与 MongoDB 数据库进行对话。

项目结构:项目结构如下所示:

项目结构

第 3 步:让我们开始编写“ app.js ”文件。

  1. 首先需要 express 和mongoose
  2. 创建与本地 MongoDB 数据库的连接
  3. 定义mongoose Schema 来存储记录。它有两个字段,一个是String数据类型的“ name ”,另一个是Numeric数据类型的“ count ”。
  4. 从 Schema 创建mongoose模型
  5. 定义根GET请求并使应用程序侦听本地端口。

当应用程序第一次被点击时, GET请求有一个特殊情况。对于这种情况,我们需要创建访客数等于 1(一)的默认记录。对于其他时间,只需将其值增加一即可。

我们使用mongoosefindOne()函数,它以一个参数作为搜索条件。它返回符合我们条件的第一条记录。如果没有记录匹配,则返回值。现在让我们看看“ app.js ”文件的完整代码。

app.js
// Requiring express to handle routing
const express = require('express')
  
// Creating app 
const app = express()
  
// Requiring mongoose to handle mongoDB Database
const mongoose = require('mongoose')
  
// Connecting to local MongoDB
mongoose.connect("mongodb://localhost:27017/visitCounterDB", {
    useNewUrlParser: true
});
  
// Creating visitor Schema to hold the
// count of visitors
const visitorSchema = new mongoose.Schema({
    name: String,
    count: Number
})
  
// Creating Visitor Table in visitCounterDB
const Visitor = mongoose.model("Visitor",visitorSchema)
  
// Get request to app root
app.get('/', async function(req,res){
      
    // Storing the records from the Visitor table
    let visitors = await Visitor.findOne({name: 'localhost'})
  
    // If the app is being visited first
    // time, so no records
    if(visitors == null) {
          
        // Creating a new default record
        const beginCount = new Visitor({
            name : 'localhost',
            count : 1
        })
  
        // Saving in the database
        beginCount.save()
  
        // Sending thee count of visitor to the browser
        res.send(`

Counter: `+1+'

')            // Logging when the app is visited first time         console.log("First visitor arrived")     }     else{                    // Incrementing the count of visitor by 1         visitors.count += 1;            // Saving to the database         visitors.save()            // Sending thee count of visitor to the browser         res.send(`

Counter: `+visitors.count+'

')            // Logging the visitor count in the console         console.log("visitor arrived: ",visitors.count)     } })    // Creating server to listen at localhost 3000 app.listen(3000,function(req,res){        // Logging when the server has started     console.log("listening to server 3000") })


第 4 步:现在运行应用程序

node app.js

输出: 现在通过点击 http://localhost:3000 在浏览器中加载应用程序

输出画面

关闭服务器并重新启动后,当我们访问根页面时,我们看到访问者的数量被保留并增加了 1。我们还将这些所有步骤记录到控制台中,以验证和理解输出。

安慰