URLから取得したデータベースの配列から値を削除しようとしています。nodejsとmongooseを使用してデータベースの配列から値を削除する方法
私は以下のコードを使用しますが、何も得られません。それは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
を有しています。 UPDATED
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}
:
また、私は私のmediaid
配列がnullであるかどうかをチェックしたいと存在するが、このコード
mediaid !== 'undefined' && mediaid.length > 0
私に答えることに感謝しますが、違いはありません!あなたはforの後にconsole.log(i)を見ますか?私はそれを実行すると私はコマンドプロンプトに表示されません! –
DBにmediaidが保存されていない可能性があります。 result.mediaidが空の配列の場合、ループはまったく実行されません。ターミナルからmongodbを手動で照会することでこれを確認できます。 – elem4th
いいえ。私のデータベースは大丈夫です。空でなければこの部分に行きますか? if(!result)?? –