목록유튜브컨텐츠탐색-StelLife/MongoDB (5)
안녕하세요
Promise.all 이란 Promise.all 함수는 여러 개의 프로미스를 배열 형태로 받아 한 번에 실행하고, 전달된 프로미스들이 모두 완료될 때까지 기다린 후, 그 결과를 배열 형태로 반환해주는 함수입니다. Promise.all 함수는 프로미스 배열을 받아서 하나의 프로미스를 반환하며, => 이 프로미스는 전달된 모든 프로미스가 resolve 될 때까지 기다린 다음, => 각각의 프로미스의 결과를 담은 배열로 resolve 됩니다. ***만약 전달된 프로미스 중 하나라도 reject 된다면,*** => Promise.all은 해당 프로미스의 reject 값을 반환합니다. 이러한 특성으로 인해, Promise.all 함수는 여러 개의 프로미스가 병렬로 실행되어야 할 때 유용합니다. Promise.al..
배열에 중복되는 값이 존재할 경우 추가하지 않고 싶다면: $addToSet 배열에 값을 추가할 때는 $push 연산자 말고도 $addToSet을 쓸 수 있습니다. 이름에서 알 수 있듯이 $addToSet은 중복을 허용하지 않습니다. $addToSet 연산자를 사용하여 배열에 값을 추가할 때 해당 배열에 값이 이미 존재하는 경우 아무런 동작을 하지 않고, 배열에 값이 존재하지 않으면 새로운 값이 배열에 추가됩니다. 다음과 같은 컬렉션이 있다고 합시다. { _id: 1, number: ["one", "two", "three"] } $addToSet 연산자를 사용하여 "one"을 추가하려고 하면 아무런 동작을 하지 않습니다. db.collection.updateOne( { _id: 1 }, { $addToSe..
data를 불러올 때 예기치 못한 null과 undefined가 발생했다. 이유를 도무지 모르겠다. (db에 저장한 채널이 삭제되었기 때문으로 추정된다.) 50개의 요소 중 1개의 에러로 인해 함수가 멈추었기 때문에, 에러가 발생한 요소 1개는 errors collection을 만들어 저장하고, 나머지에 대해서는 이어서 처리하는 것이 유리하다 생각했다. 이를 위해서 데이터를 제대로 불러오지 못해 에러가 발생하였을 경우에는 try-catch문과 for...of의 continue로 다음 요소부터 이어가도록 하였다. app.get( "/api/playlistItems", wrapper(async (request, response) => { const channelsCollection = await db.col..
DB channel: 모든 채널 video: search로 탐색한 모든 중복되지 않은 비디오 업로드 일자별로 구분 playlist: 재생목록 "/search" (100P * videoDailyUploadCount / 50 ) "최신순" query 검색 const getLatestSearch = async (q, amount) => { const params = { key: apiKey, part: "snippet", order: "date", q: q, regionCode: "kr", type: "video", maxResults: amount, }; try { const response = await axios.get("/search", { params }); console.log(response.da..