热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Node.js中添加自己本地/自定义数据库中的记录?

如何在Node.js中添加自己本地/自定义数据库中的记录?原

如何在 Node.js 中添加自己本地/自定义数据库中的记录?

原文:https://www . geesforgeks . org/how-add-records-in-your-local-custom-database-in-node-js/

自定义数据库表示文件系统中的本地数据库。有两种类型的数据库“SQL”和“NoSQL”。在 SQL 数据库中,数据以表的方式存储,而在 Nosql 数据库中,数据以某种特定的方式独立存储,以独立标识每条记录。我们还可以用 Nosql 方式在本地创建自己的数据库或数据存储。

创建本地数据库并向其中添加记录需要一些步骤。这些步骤如下:


  • 在项目目录的根目录下创建 package.json 文件。
    命令创建包文件

    js
    npm init -y


  • 安装 express 和 body-parser 包。
    命令安装软件包

    js
    npm install express body-parser


  • 创建一个显示表单的 GET 路径(将信息提交给数据库的 HTML 表单)。


  • 创建后续的帖子路由来处理表单提交请求。

  • 将服务器设置为在特定端口(开发者端口–3000)上运行

  • 创建一个存储库文件,并向其中添加与创建数据库和存储数据相关的所有逻辑。

本示例创建一个名为“datastore.json”的本地数据库,并将用户信息存储到其中。

文件名:index.js

const express = require('express')
const bodyParser = require('body-parser')
const repo = require('./repository')
const app = express()
const port = process.env.PORT || 3000
// The body-parser middleware 
// to parse form data
app.use(bodyParser.urlencoded({extended : true}))
// Get route to display HTML form
app.get('/signup', (req, res) => {
  res.send(`
    


      
        

          

            
          

                              placeholder='Email' 
          for='email'>
        

        

          

            
          

                               placeholder='Password' 
          for='password'>
        

        

          
        

      
    

  `);
})
// Post route to handle form submission 
// logic and add data to the database
app.post('/signup', async (req, res) => {
  const {email, password} = req.body
  const addedRecord = await 
    repo.createNewRecord({email, password})
  console.log(`Added Record : 
    ${JSON.stringify(addedRecord, null, 4)}`)
  res.send("Information added to the"
         + " database successfully.")
})
// Server setup
app.listen(port, () => {
  console.log(`Server start on port ${port}`)
})

文件名:repository.js

// Importing node.js file system module 
const fs = require('fs')
class Repository {
  constructor(filename) {
    // Filename where datas are going to store
    if (!filename) {
      throw new Error(
'Filename is required to create a datastore!')
    }
    this.filename = filename
    try {
      fs.accessSync(this.filename)
    } catch (err) {
      // If file not exist
      // it is created with empty array
      fs.writeFileSync(this.filename, '[]')
    }
  }
  // Logic to add data
  async createNewRecord(attributes) {
    // Read filecontents of the datastore
    const jsOnRecords= await 
      fs.promises.readFile(this.filename,{
      encoding : 'utf8'
    })
    // Parsing JSON records in Javascript
    // object type records
    const objRecord = JSON.parse(jsonRecords)
    // Adding new record
    objRecord.push(attributes)
    // Writing all records back to the file
    await fs.promises.writeFile(
      this.filename,
      JSON.stringify(objRecord, null, 2)   
    )
    return attributes;
  }
}
// The 'datastore.json' file created at
// runtime and all the information 
// provided via signup form store in
// this file in JSON formet.
module.exports = new Repository('datastore.json')

包联文件:

运行程序的步骤:
使用以下命令运行 index.js 文件:

node index.js

提交回复的表单:
注意:这里三个回复一个接一个提交,所有回复都存储在 datastore.json 文件中。

提交请求后重定向页面:

输出:

数据库:

注意:第一次运行的程序数据库(datastore.json)文件在项目目录中不存在,它在运行程序后动态创建并存储提交的响应。之后,所有提交的回复都被逐一添加到数据库中。


推荐阅读
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 在C#中开发MP3播放器时,我正在考虑如何高效存储元数据以便快速检索。选择合适的数据结构,如字典或数组,对于优化性能至关重要。字典能够提供快速的键值对查找,而数组则在连续存储和遍历方面表现优异。根据具体需求,合理选择数据结构将显著提升应用的响应速度和用户体验。 ... [详细]
  • 在GitHub上克隆vue-element-admin项目时遇到依赖安装错误
    在 GitHub 上克隆 vue-element-admin 项目后,使用 `npm install` 安装依赖时遇到了未知的 Git 错误。具体错误信息为 `npm ERR! code 128`,提示命令执行失败。这可能是由于网络问题、Git 配置不正确或某些依赖包的仓库地址无效导致的。建议检查网络连接、更新 Git 版本并确保所有依赖项的 URL 正确无误。 ... [详细]
  • 如何在 Node.js 环境中将 CSV 数据转换为标准的 JSON 文件格式? ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
author-avatar
秋荼凝脂_697
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有