gpt4 book ai didi

node.js - MongoDB Node Express GET 和 DELETE 工作,而不是 POST?

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:56 25 4
gpt4 key购买 nike

GET 有效。删除作品。

不明白为什么 POST 不能处理像这样简单的事情。

{"akey":"avalue"}

使用Postman进行测试。 Postman 的错误是“无法得到任何响应”,这很奇怪,因为我对 GET 和 DELETE 没有任何问题。

Mongo/Node 新手。关注 Brad Traversy 的 https://www.youtube.com/watch?v=j55fHUJqtyw关于 Vue、Mongo、Express、Node 的教程。

有什么突出的地方吗?

const express = require( 'express' );
const mongodb = require( 'mongodb' );

const router = express.Router();

// GET POSTS
router.get( '/', async ( req, res ) => {
const posts = await loadPostsCollection();
res.send( await posts.find( {} ).toArray() );
} );

// ADD POST
router.post( '/', async ( req, res ) => {
const posts = await loadPostsCollection();
await posts.insertOne( {
text: req.body.text
} );
res.status(201).send();
} );

// DEL POST
router.delete('/:id', async (req, res)=>{
const posts = await loadPostsCollection();
await posts.deleteOne({_id: new mongodb.ObjectID(req.params.id)});
res.status(200).send();
})

async function loadPostsCollection() {
const client = await mongodb.MongoClient.connect( 'mongodb+srv://someUser:somePassword@some-bkebp.mongodb.net/test?retryWrites=true&w=majority', {
useNewUrlParser : true,
useUnifiedTopology: true
} );
return client.db( 'someDB' ).collection( 'somCollection' )
}

module.exports = router;

最佳答案

原因

似乎您的 await posts.insertOne({ text: req.body.text }); 永远不会结束(或崩溃并且 Express 没有响应),因此 Postman 永远不会收到响应。

await 之后尝试 console.log,看看这是否是问题的根本原因。

可能的解决方案

尝试以这种方式处理有关数据库请求的错误

router.post('/', async (req, res) => {
try {
const posts = await loadPostsCollection();
await posts.insertOne({
text: req.body.text
});
res.status(201).send(); // You may need to answer something here
} catch (e) {
console.error(e);
return res.status(500).end() // 500 is INTERNAL SERVER ERROR
}
});

关于node.js - MongoDB Node Express GET 和 DELETE 工作,而不是 POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com