7

データベースからドキュメントを削除しようとすると、次のエラーが表示されます。

/delete/532fa5e56f885c7fec5223b1fds を取得できません

ドキュメントを正常に削除するにはどうすればよいですか?

app.js

//Delete 
app.del('/delete/:id', routes.delete_offer);

ルート/index.js

    //Delete
    exports.delete_offer = function (req,res){
      Offer.findOneAndRemove({'_id' : req.params.id}, function (err,offer){
        res.redirect('/newsfeed');
      });
    };

ビュー/dashboard.jade

        - each offer in offers
            div.offer.row
                a(href="/offer/" + offer._id)
                    div.columns
                        div.sell_type
                            p=offer.type
                    div.small-8.columns.sell_info
                        p.sell_price="$" + offer.fixedPrice() + " "
                        p.sell_location="@ " + offer.location + " ›"
                    div.small-4.columns.sell_pic
                        p=offer.user_id
                a.delete(href="/delete/" + offer._id)="Delete Offer"
4

4 に答える 4

1

これで、RESTful な意味でのDELETE動詞のルートが設定されました。あなたはそれをそのように呼んだり、RESTfulな方法で使用したりしていないようです。

アプリケーションは実際にはこれをREST要求として処理し、発生した状況に応じた応答としてステータスとコンテンツを発行する必要があります。現在、別の URL にリダイレクトしています。それは正しいアプローチではありません。ただし、REST を理解していない場合は、そのようにしてください。代わりにGETを使用するようにルートを変更してください。

価値があるのは、使用法とテストを整理したら、場合によってはcurlなどを使用することです. 次に、.findByIdAndRemove()代わりに使用することを検討してください。

Offer.findByIdAndRemove(req.params.id, function (err,offer){
    if(err) { throw err; }
    // ...
}

そして、実際に応答をチェックすることは、有効またはエラー応答を転送または送信する前に期待することです。これはあなたがすべきことです。

于 2014-03-24T05:18:30.487 に答える