gpt4 book ai didi

node.js - 在 Node.js 中使用 Nano 销毁文档

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:38 24 4
gpt4 key购买 nike

我正在努力在 Node.js/Express 4 中构建我的第一个 REST API。我正在通过 Nano 使用 Couchdb。我已经把 Get、Put 和 Post 的内容都记录下来了,但是删除却导致了一些问题。我正在删除该文档,但收到 404 响应。我还尝试在 Mocha 中为此编写适当的测试,这就是我获得 404 的方式,以及使用 Postman 进行手动测试。

这是我到目前为止所拥有的:

在我的 route :

router.delete('/:bear_id', function(req, res, done) {
console.log("deleting..." + req.params.bear_id);
bears.get(req.params.bear_id, function(err, body, header) {
if (!err) {
bears.destroy(req.params.bear_id, body._rev, function(err, body, header) {
if (!err) {
res.send(200, { message: "deleted " + req.params.bear_id});
}
});
}
done();
});
});

在我的测试中:

it('DELETE api/bears should delete the test_bear', function(done){
var options = {
url: 'http://localhost:3001/api/bears/test_bear'
};
setTimeout( function() {

request.del(options , function(err, res, body){
expect(res.statusCode).to.equal(200);
expect(res.body).to.equal('{"message":"deleted test_bear"}');
done(err);
});
}, 100);
});

最佳答案

由于 node.js 的异步特性,

done() 被不按顺序调用。

这会导致 express 检查下一条路线,该路线很可能是您的 404 路线或无路线。

router.delete('/:bear_id', function(req, res, done) {
console.log("deleting..." + req.params.bear_id);
bears.get(req.params.bear_id, function(err, body, header) {
if(err) {
return done(err);
}
bears.destroy(req.params.bear_id, body._rev, function(err, body, header) {
if(err) {
return done(err);
}
return res.send(200, { message: "deleted " + req.params.bear_id});
});
});
});

注意:我建议将路由中的 done 更改为 next,因为它可以更好地描述快速路由的实际过程。

关于node.js - 在 Node.js 中使用 Nano 销毁文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220722/

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