使用 meanstack 从 mongoDb 中删除时未定义 ObjectId
ObjectId is not defined while deleting from mongoDb using meanstack
我正在尝试通过将 MEAN STACK 与 ANgular 结合使用来从 MOngoDb 中删除条目 4.(这项技术的新手)
打字稿:
deleteitem(id){
let deleteresult;
let itemid = id;
this.dataService.deleteitem(itemid)
.subscribe(res =>deleteresult =res,
err => this.apiError = err,
)
};
数据服务:
deleteitem(itemid): Observable<any>{
let data =new URLSearchParams();
data.set('deleteId', itemid);
console.log(data.toString());
return this.http.post(URL, data.toString())
.map(res=> res.json())
.catch((error:any) => Observable.throw('Server Error To delete the item'));
}
Router.js
const ObjectID = require('mongodb').ObjectID;
router.post('/deleteitem', function(req, res){
MongoClient.connect('URL',function(err, client){
if (err) throw err;
var myDB = client.db('DbName');
var collection = myDB.collection('collectionName');
console.log(req.body);
//var objectId = collection.getObjectId();
collection.remove({_id: ObjectId(req.body.deleteId), function(err, result)
{
res.send((result==1)?{msg:deleted} : {msg:"error:"+ err});
}});
})
})
错误:
ObjectId is not defined.
此外,console.log(req.body) 给出了“{}”值。不知道为什么。
但是 console.log(data.toString());在数据服务中给出要从 MongoDb.
中删除的预期 _id 的值
尝试在
中使用 data
而不是 data.toString()
return this.http.post(URL, data.toString())
这将为您提供 console.log(req.body);
中的输出值
此外,尝试替换下面的代码行
collection.remove({_id: ObjectId(req.body.deleteId), function(err, result)
和
collection.deleteOne({_id: new mongodb.ObjectID(req.body.deleteId)}, function(err, result)
您需要在此处创建 mongodb 的新实例。
希望这有效。
我正在尝试通过将 MEAN STACK 与 ANgular 结合使用来从 MOngoDb 中删除条目 4.(这项技术的新手)
打字稿:
deleteitem(id){
let deleteresult;
let itemid = id;
this.dataService.deleteitem(itemid)
.subscribe(res =>deleteresult =res,
err => this.apiError = err,
)
};
数据服务:
deleteitem(itemid): Observable<any>{
let data =new URLSearchParams();
data.set('deleteId', itemid);
console.log(data.toString());
return this.http.post(URL, data.toString())
.map(res=> res.json())
.catch((error:any) => Observable.throw('Server Error To delete the item'));
}
Router.js
const ObjectID = require('mongodb').ObjectID;
router.post('/deleteitem', function(req, res){
MongoClient.connect('URL',function(err, client){
if (err) throw err;
var myDB = client.db('DbName');
var collection = myDB.collection('collectionName');
console.log(req.body);
//var objectId = collection.getObjectId();
collection.remove({_id: ObjectId(req.body.deleteId), function(err, result)
{
res.send((result==1)?{msg:deleted} : {msg:"error:"+ err});
}});
})
})
错误:
ObjectId is not defined.
此外,console.log(req.body) 给出了“{}”值。不知道为什么。 但是 console.log(data.toString());在数据服务中给出要从 MongoDb.
中删除的预期 _id 的值尝试在
中使用data
而不是 data.toString()
return this.http.post(URL, data.toString())
这将为您提供 console.log(req.body);
中的输出值此外,尝试替换下面的代码行
collection.remove({_id: ObjectId(req.body.deleteId), function(err, result)
和
collection.deleteOne({_id: new mongodb.ObjectID(req.body.deleteId)}, function(err, result)
您需要在此处创建 mongodb 的新实例。 希望这有效。