我试图从我的数据库中删除数组中的值,这是我从网址获取的。
我使用下面的代码,但我什么都没得到。它没有进入for
循环。
app.get('/remove/:medid/:tokenid', function(req, res) {
var medid = req.params.medid;
var token = req.params.tokenid;
var query = { tokenid: token, mediaid !== 'undefined' && mediaid.length > 0 }
user.find(query).exec(function(err, result) {
if (err) {
res.send('erooooooor')
}
if (!result) {
res.send('whooops, you dont have any media yet :)')
} else {
console.log('its here')
for (var i in result.mediaid) {
console.log(i)
if (i == medid) {
user.update({ tokenid: token }, { $pull: { mediaid: medid } }, function(err, result2) {
if (err) {
res.send('an error happened')
} else {
console.log('deleted')
//res.send('your tokenid is '+ token)
}
})
} else {
res.send('media id didnt match')
}
}
}
});
});
我的数据库有3个对象 userid
和tokenid
是字符串,而mediaid
是一个数组。
另外,我想检查我的mediaid
数组是否为null,并且此代码是否存在
mediaid !== 'undefined' && mediaid.length > 0
答案 0 :(得分:2)
您的json语法在以下行
中不正确var query = {tokenid: token, mediaid !== 'undefined' && mediaid.length > 0}
您应该只是让您的查询基于令牌ID。
var query = {tokenid: token};
当你写for(var i in result.mediaid)
时,对于循环的每次迭代,变量' i'被赋予当前元素的索引,而不是其值。因此,应修改if条件以检查result.mediaid[i] == medid
而不是i == medid
。修改后的循环应该类似于:
for(var i in result.mediaid){
console.log(i);
if(result.mediaid[i] === medid){
user.update({tokenid: token}, {$pull: {mediaid: medid}},function(err, result2){
if (err){
res.send('an error happened');
}
else{
console.log('deleted');
//res.send('your tokenid is '+ token)
}
});
}
}
答案 1 :(得分:0)
请你可以替换为:
.btn.button-add, .btn.button-bullet {
background-color: transparent;
}
.btn.red-background {
background-color: #FCC1C5;
}
更新:
我建议在app.get('/remove/:mediaid/:tokenid', function(req, res){
var medid = req.params.mediaid;
var token = req.params.tokenid;
var query = {tokenid: token, mediaid !== 'undefined' && mediaid.length > 0}
我希望帮助你 - 何塞卡洛斯拉莫斯