express - 如何在 Express 和 MongoDB 中使用 async 和 await
问题描述
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const mongodb = require('mongodb');
const app = express();
app.use(cors())
app.use(bodyParser.json());
const MongoClient = mongodb.MongoClient;
const url = "mongodb://localhost:27017/recart";
app.post("/register" , (req, res) => {
const { displayName, email, password } = req.body;
if (!email || !displayName || !password) {
return {code: 400, msg: "incorrect form submission"}
}
let insertedid = null
MongoClient.connect(url, (err, db) => {
if (err) throw err;
var dbo = db.db("recart");
var myobj = { displayName: displayName, email: email, password: password };
dbo.collection("customers").insertOne(myobj)
.then(res => {
insertedid = res.insertedId
})
});
res.json({id: insertedid})
})
app.listen(process.env.PORT || 3000, ()=> {
console.log(`App is running on port 3000`);
})
在这里,我将数据存储在 db 中,并将最后插入的 id 发送到前端。
但是,id
返回 null。
我该如何使用async
和await
解决这个问题?
解决方案
您可以使用以下方式修改您的 post 功能async await
:
app.post("/register", async (req, res) => {
const { displayName, email, password } = req.body;
if (!email || !displayName || !password) {
return {code: 400, msg: "incorrect form submission"}
}
let insertedid = null ;
MongoClient.connect(url,{ useNewUrlParser: true }, async (err, db) => {
if (err) throw err;
var dbo = db.db("recart");
var myobj = { displayName: displayName, email: email, password: password };
var result = await dbo.collection("customers").insertOne(myobj);
insertedid = result.insertedId;
res.json({ id: insertedid})
});
})
推荐阅读
- java - 杰克逊 CSV。标题中的引号转义
- javascript - 如何在 html 和 js 中的 h1 中显示变量 Valor
- sql - SQL Server - 如果日期出现多次,则删除较旧的日期时间条目
- node.js - 在 nodejs 上发布 base64 数据以表达服务器有问题
- python - 如何在使用 YAML(无服务器)部署具有胶水版本 1.0 的 AWS 胶水作业时选择 python 版本 3
- php - 看懂C源码,rand的PHP实现
- jquery - 在边缘浏览器中的 asp.net mvc 验证错误中使用 jQuery datepicker
- python - 如何在不使用事件的情况下使用 Discord.py 发表评论?
- r - 编写自定义函数时将列名传递给 dplyr::coalesce()
- java - 如何在 Java 中将每个标签与其 Textfield 旁边的对齐?