userID를 null로 변경하여 데이터베이스의 여러 게시 키에 연결된 특정 사용자 ID의 모든 값을 지우고 싶습니다. userID는 내 데이터베이스의 posts / ivies / userIDs 경로에있는 post 키에 연결됩니다. 다음은 데이터베이스의 모습입니다.
그래서 다음 for 루프를 실행하여 userID를 필터링하고 null로 설정하기로 결정했습니다.
exports.wipeData = functions.https.onRequest(async (req, res) => {
const original = 'ppPXA8MvaSRVbmksof0ByOzTxJ92';
const snapshot = await admin.database().ref('/posts/ivies/userIDs/');
console.log((snapshot));
for (let value in snapshot.val) {
if (value == original) {
snapshot.val.set("null")
}
else {
console.log(value)
}
}
res.redirect(303, snapshot.ref.toString());
// [END adminSdkPush]
});
이 함수는 배포 및 실행되지만 예상대로 'ppPXA8MvaSRVbmksof0ByOzTxJ92'를 'null'로 변경하지 않습니다. 도와 주셔서 감사합니다.
일반적인 접근 방식은 괜찮아 보이지만 거기에 몇 가지 버그가 있습니다.
이것은 더 잘 작동합니다.
exports.wipeData = functions.https.onRequest(async (req, res) => {
const original = 'ppPXA8MvaSRVbmksof0ByOzTxJ92';
const ref = admin.database().ref('/posts/ivies/userIDs/');
const query = ref.orderByValue().equalTo(original);
const results = await query.once('value');
const updates = {};
results.forEach((snapshot) => {
updates[snapshot.key] = null;
});
await ref.update(updates);
res.status(200).send(JSON.stringify(updates));
})
주요 변경 사항 :
snapshot
데이터베이스에서 읽기하지 않는 것처럼 변수는 데이터가 포함되어 아직 없습니다. once('value')
읽어 내 코드가 수행한다.await
에서는 await ref.update(updates)
이 데이터베이스 쓰기가 완료되면 리디렉션 만 실행이 보장되므로, 아마 주요 수정 사항입니다.이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다