次のエラーが発生していますが、その原因を完全に把握することができません。Mongoose削除中にエラーが発生する
CastError: Cast to ObjectId failed for value "XYZ" at path "_id" for model "Partner"
私は私のスキーマが
var partnerList = new Schema (
{
partnerName: String,
supportedProducts: [String]
},
{
collection: 'partnerList'
}
);
module.exports = mongoose.model('Partner', partnerList);
私は ローカルホストを使用して、私のノードのアプリサービスへの要求を行うにしようとしています
delete: function (req, res) {
var removePartner = req.params.partnerName;
var promise = Partner.findByIdAndRemove(removePartner).exec();
promise.then(function removePartner(val) {
console.log('partner value removed');
res.send(val);
}).catch(function catchError(err){
console.error(err);
throw err;
});
}
私の削除機能の機能を以下のように定義されています:8443/data/XYZ、私はパラメータとして値 'XYZ'を渡しています。この値は、適切なオブジェクトをデータベースから削除するために使用されます。
外見remove()は私の場合はジョブを実行するはずですが、findOneAndRemove()を呼び出す場合は好奇心がかかり、そのパラメータ値のObjectidにどうやってアクセスしますか? – user8222014
パートナーの名前(XYZ)ではなく、URLのObjectIdを使用してAPIを削除することができます。たとえば、http:// localhost:8443/data/59558ccd7acc4dd63ea88988 - >私の更新された回答を参照してください。 – benjiman
これは非常にユーザーフレンドリーではないと思いますが、ObjectIdは実際には人間のために作られていません;)しかし、通常は、アイテムを削除するために何かを入力するようユーザーに求めません。彼はパートナーリストなどのエントリのリンク(削除など)をクリックするだけで、アプリケーションはそのIDを知って使用して削除を実行します。しかし、どのアプリケーションを構築しているのか正確にはわからないので、あなたのケースに最適なものが何であるかはわかりません。 – benjiman