nodeJSを使用してMongoDBから文書を削除しようとしています。MongoDB _idの長さが25になる
私のコードの流れは以下の通りです: 1.ユーザーは特定の生徒を削除できます。 2.私はすべての学生書類を引っ張ってDBに保存し、学生オブジェクトに保存しました。 3.ユーザーは、提供されたテキストボックスで検索をフィルタリングし、特定の生徒を選択して削除することができます。
UIの下に見つけてください:
HTMLページを以下のように:UIに関連付けられたangularJSコントローラは以下の通りです
<h2 align="center">Delete Student</h2>
<div ng-controller="deleteStudentController">
<form ng-submit="deleteStudent()">
Student Name:<input type="text" letters-only ng-model="searchName"/><br>
<div ng-repeat="student in students | filter:searchName" ng-show="searchName.length">
<input type="radio" ng-model="$parent.studentRadio" name="studentRadio" value="{{student._id}}"/>{{student | formatter}}
</div>
<input type="submit" value="Delete Student"/>
{{output}}
</form>
</div>
:
mainApp.controller("deleteStudentController", function($scope,$http) {
var resData = {};
$scope.student = {};
var urlGet = "/students/all";
$http.get(urlGet)
.then(function(response) {
$scope.students = angular.fromJson(response.data);
});
$scope.deleteStudent = function(){
var urlDelete = "/students/remove:"+$scope.studentRadio;
$http.delete(urlDelete)
.success(function(response, status, headers, config){
$scope.output = "Student successfully deleted.";
})
.error(function(response, status, headers, config){
$scope.output = "Error in processing. Please try again.";
});
}
});
どのイントゥーンがノードコントローラを呼び出すか:
router.delete("/remove:studId", function(req,res){
Students.remove(req.params.studId, function(err) {
if (err) {
throw err;
}
else {
var respOut = "Student deleted";
res.send(respOut);
}
});
});
コントローラ内には、DB通信が行われる受講生モデルのオブジェクトがあります。
exports.remove = function(studentId, cb) {
var collection = db.get().collection('students');
console.log("_id"+studentId);
console.log("Length---->"+studentId.length);
collection.remove({_id: mongodb.ObjectID.createFromHexString(studentId)}, function(err) {
if (err) {
throw err;
}
else {
cb(err);
console.log("Record deleted.");
}
});
}
しかし、そののようにエラーを与える:私は、ドキュメントを削除するには、DB
から学生モデルのコードを持って_id値からオブジェクトIDを作成するためのmongodb.ObjectID.createFromHexString()メソッドを使用していました"エラー:渡される引数は、12バイトの単一の文字列または24の16進文字の文字列でなければなりません"。だから私はDB学生の文書とその長さから得た_id値を記録しようとしました。驚いたことに私は長さを '25'にしています。
私は取得していますことを、以下のコンソールを見つけるしてください:
_id:この問題について576aba09090560f80bd2caaa 長----> 25
任意のアイデアを?
"/students/remove:"+$scope.studentRadio
私はあなたが:
があるにしたいと仮定し、そのURLは次のようになります:助けてください.....
_idの長さ上記は24です。「studentId」とは何ですか?どうやってそれを手に入れますか? – freakish
はい。しかし、私は長さを25にしています。私はコンソールを作りました: console.log( "Length ---->" + studentId.length); 長さ25の理由を教えてください: –
@JohnyHK私の質問は更新されました。どうぞご覧ください。何かを提供する必要がある場合は教えてください。 –