在Node.js中使用纳米销毁文档

我正在构buildNode.js / Express 4中的第一个REST API。我正在通过Nano使用Couchdb。 我已经得到了Get,Put和Post的东西,但是Delete导致了一些问题。 我得到的文件删除,但我得到一个404响应。 我也试图在摩卡书写适当的testing,这就是我如何得到404,以及与邮递员手动testing。

这是我到目前为止:

在我的路线中:

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(); }); }); 

在我的testing中:

 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的asynchronous特性, done()被调用。

这导致快速检查下一个路线,这很可能是你的路线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}); }); }); }); 

注意:我build议你在路由中改变next ,因为它更好地描述了快速路由的实际过程。