如何从 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 从数据库中获取信息,这意味着程序假设已经运行过一次,并且一些记录被添加到我们尝试获取的数据库中。