📌  相关文章
📜  如何从 Node.js 的本地/自定义数据库中按 ID 查找记录?

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

如何从 Node.js 的本地/自定义数据库中按 ID 查找记录?

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

有一些步骤涉及创建本地数据库并使用 id 从中获取记录。这些步骤如下:

  • 在项目目录的根目录下创建 package.json 文件。
    创建 package.json 文件的命令
    npm init -y
  • 安装 express 和 body-parser 包。
    安装包的命令
    npm install express
  • 使用 id 创建一个 POST 路由以请求特定用户数据库。
  • 将服务器设置为在特定端口上运行(开发人员的端口 - 3000)。
  • 创建一个存储库文件并添加与创建本地数据库相关的所有逻辑。
  • 在存储库文件中创建一个方法以使用 id 从数据库中获取记录。

示例 1:此示例说明如何使用 id 从本地自定义数据库中获取记录。
文件名:index.js

const express = require('express')
const repo = require('./repository')
const {userInfo} = require('./fetchUser')
  
const app = express()
  
const port = process.env.PORT || 3000
  
app.get('/', (req, res) => {
  res.send(`
    
           
  `) })    // Route to fetch particular user  // information using id app.post('/', async (req, res) => {        // Find user from (id:3f2006d22864b8af)   const user =      await repo.findById('3f2006d22864b8af')      res.send(userInfo(user)) })    // Server set to run app.listen(port, () => {   console.log(`Server start on port ${port}`) })

文件名:fetchUser.js:这个js文件有一个方法可以将获取的用户信息显示到网页上。

module.exports = {
  
  // Function to displays user information
  userInfo(user) {
    return `
      
        

ID : ${user.id}

      

      
        

Email : ${user.email}

      

      
        

Name : ${user.name}

      

      
        

Password : ${user.password}

      

          `   } }

文件名:repository.js此文件包含使用 id 查找记录的所有逻辑。

// Importing node.js file system module 
const fs = require('fs')
  
class Repository {
  constructor(filename) {
  
    // Filename where data 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, '[]')
    }
  }
  
  async findById(id){
  
    // Read all 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)
  
    // Search for required record
    const requiredRecord = 
      objRecord.find(record => record.id === id)
    return requiredRecord
  }
}
  
// 'datastore.json' file created at runtime
// if it does not exist. Here we try to fetch
// information from database using an id that
// means database(datastore.json) already exist
// and there are also records in it.
module.exports = new Repository('datastore.json')

包.json 文件:

数据库:

输出:

点击按钮后:

注意:第一次运行程序的数据库(datastore.json)文件在项目目录下不存在,是运行程序后动态创建的。但是这里我们尝试使用 id 从数据库中获取信息,这意味着程序假设已经运行过一次,并且一些记录被添加到我们尝试获取的数据库中。