前提
以下是我的YouTube视频中解释的代码(仅是意大利语,但字幕字幕),该代码定于02-02-2023。
您不需要知道它的工作方式。但是您需要知道什么是数据库。在这里不知道SQL或NOSQL之间的区别并不重要。重要的是要知道数据库是什么。 MongoDB是一个数据库。
休息
这篇文章还假设您打结了什么是休息。休息手段:代表性国家转移。很快,..带有数据库CRUD操作(创建,阅读,更新和删除)具有相应的HTTP动词。
- 创建 - >发布
- 阅读 - >获取
- 更新 - > put
- delete-> delete
package.json
这个小快的crud非常简单。在包装json中,我们只有很少的软件包:@fastify/mongodb@6.0.0
和fastify
。无需其他依赖。
要求
代码这里非常非常简单。它加载快速广告登记册。数据库之所以称为库,是因为我希望构建一个简单的工具来存储我的所有书籍。
const fastify = require('fastify')({ logger: !true })
fastify.register(require('@fastify/mongodb'), {
forceClose: true,
url: 'mongodb://localhost:27017',
database: 'library'
})
创建
crud包含创建,读取,更新和删除。这是第一个字母。
fastify.post('/books', async (request, reply) => {
const result = await fastify
.mongo.db.collection('books')
.insertOne(request.body)
reply.send({
message: 'book added',
id: result.insertId
})
})
读
我想列出存储在数据库中的所有书籍。
fastify.get('/books', async (request, reply) => {
const books = await fastify
.mongo.db.collection('books')
.find().toArray()
reply.send(books)
})
更新
我来自PHP(Symfony),对我来说像const { bookId } = request.params;
这样的代码类似于黄金。节点是非常好的语言。我爱上了这种语言。
fastify.put('/books/:bookId', async (request, reply) => {
const { bookId } = request.params;
const ObjectId = fastify.mongo.ObjectId
const result = await fastify
.mongo.db.collection('books')
.replaceOne(
{ _id: new ObjectId(bookId) },
request.body
)
reply.send({
message: 'book updated',
id: result.insertId
})
})
删除
fastify.delete('/books/:bookId', async (request, reply) => {
const { bookId } = request.params;
const ObjectId = fastify.mongo.ObjectId
await fastify
.mongo.db.collection('books')
.deleteOne({ _id: new ObjectId(bookId) })
reply.statusCode = 204
reply.send(null)
})
服务器
const start = async () => {
try {
await fastify.listen({ port: 3000 })
} catch (err) {
fastify.log.error(err)
process.exit(1)
}
}
start()
跑步
现在有两个简单命令:
npm run mongo
npm run start
我们获得了现成的应用程序。在这篇文章中,我没有客户。因此,我将在这里放一些卷曲命令,以进行所有CRUD操作。使用真实ID更改<bookId>
。
- curl http://localhost:3000/books
- curl -h'content -type:application/json'-x post http://localhost:3000/books -d'{“ titolo”:“ node.js Design模式”,“自动”:“ Luciano Mammino”}'
- curl -x put -h'content -type:application/json'http://localhost:3000/books/ -d'{“ title”:“ node.js Design模式”,“作者”:[“ Mario Casciaro”,“ Luciano Mammino”] }'
- curl -v -x删除http://localhost:3000/books/