我正在尝试使用MongoDB和nodejs构建应用程序。 我有一个 Ride 模型,其中包含一个名为 steps 的userID数组。我想从由其自己的RideID指定的Ride中删除一个userID条目。
我尝试了以下代码,但是它不起作用,总是会引发错误
router.post('/quitRide',async (req,res)=>{
let userID = req.body.userID; //userID to be deleted
let rideID = req.body.rideID; //rideID of the Ride we want to access
Ride.find({_id:rideID})
.exec()
.then(t => {
t[0].steps.splice(t[0].steps.indexOf(userID), 1);
res.status(200);
})
.catch(err => res.status(400).json({error : err}))
})
这是我得到的错误:
{错误:“ erreurTypeError:无法读取未定义的属性'indexOf'”}
似乎无法以某种方式访问步骤
答案 0 :(得分:0)
尝试使用$pull
,有关更多信息,请访问this link
router.post('/quitRide',async (req,res)=>{
let userID = req.body.userID; // userID to be deleted
let rideID = req.body.rideID; // rideID of the Ride we want to access
Ride.findOneAndUpdate({_id:rideID}, { $pull: { steps: userId } })
.exec()
.then(t => {
// response with success
res.status(200);
})
.catch(err => res.status(400).json({error : err}))
})
答案 1 :(得分:0)
您可以使用 Lodash Remove
函数从数组中删除元素。
您可以通过运行此命令npm i --save lodash.remove
来安装npm软件包,然后在代码中进行更改。
router.post('/quitRide',async (req,res)=>{
let userID = req.body.userID; //userID to be deleted
let rideID = req.body.rideID; //rideID of the Ride we want to access
Ride.find({_id:rideID})
.exec()
.then(t => {
_.remove(t[0].steps,userID);
console.log(t[0].steps)//which contains your array without userID
res.status(200);
})
.catch(err => res.status(400).json({error : err}))
})
别忘了导入/需要lodash软件包,您可以在下面的链接中找到文档