私のコードではwhileループがあり、それには条件があります。しかしそれは最初のラウンドを行うだけです。このループは関数の一部です。ここでは、この部分のための私のコードは次のとおりです。whileループはゼロで終了します
else{
var i = 0;
do{
var resmedid = (result.media[i].mediaid);
var len = result.media.length
if(opts.medid1 == resmedid){
var query = {tokenid: opts.token1}
user.findOneAndUpdate(query, {$pull: {media: {_id: result.media[i]._id}}},function(err, result2){
if (err){
console.error(err);
callback(new Error('System Error'));
return;
}
else{
result = 'updated';
callback(null, result);
return;
}
});
break;
}
if (i == len){
console.log(i = len);
result = 'not match';
callback(null, result);
return;
}
i++;
}
while(i < result.media.length);
};
何このループがないことopts.medid1がresult.mediaと呼ばれ、アレイ内の文字列と等しい場合、それは見ているということです。 reesult.media [i] .mediaidはデータベースに存在し、opts.medid1はURLで取得したものです。
これはどのように私のスキーマlooklikeである:私は私はそれでは0である最初のラウンドで立ち往生私のwhileループを引き起こすことが間違って何をやっている
var userschema = new mongoose.Schema({
userid: {type: String, unique: true},
tokenid: {type: String, sparse: true, default: null},
media: [{
mediaid: String,
mediaurl: String
}]},
{versionKey: false}
);
?
ありがとうございます。
感謝。それが見つかった場合にループから抜け出し、それを削除したいからです。私はループ内のすべてのifとelseをコメントし、単に 'console.log(i)'を実行しますが、それでも動作しません!! –
あなたの問題を解決するかどうか教えてください。問題がまだ残っていればもう一度見てください。 –
またループから外れません!!私が 'console.log(i)'をループに入れただけでは、単に0が出力されます! –