我直接連接到 mongodb 并使用 mongoose 連接,mongoose db 文件通過調用dbConnect(),并且我的查詢工作正常。問題在于我稍后添加的標準數據庫連接 ( const { db } = await connectToDatabase();) 來查詢我無法將其轉換為可接受的貓鼬模式的集合。我的代碼在頂部:import { connectToDatabase } from "../../utils/mongodb"import dbConnect from '../../utils/dbConnect'dbConnect();export default async (req, res) => { const { db } = await connectToDatabase(); try{ ...data我從 API 中獲取一些數據,我需要迭代這個data.titles 并在 mongodb 集合“channels”(字段為“name”)中執行 a 操作find(),以便僅保留那些與集合項的字段名稱匹配的 data.title s我嘗試的是這樣的: var token = `https://www.googleapis.com/youtube/v3/subscriptions?part=snippet%2CcontentDetails&mine=true&maxResults=50&key=${process.env.GOOGLE_API_KEY}&access_token=${token}`; token = token.replace(/"/g, ''); var url = await fetch(token); const subsData = await url.json(); //* Save all followed channels names, imgs and ids in arrays var subsArray = [], idsArray = [], imgsArray = []; for(let i=0; i < subsData.items.length; i++){ //* check the channel's name is in database // if ( Chann.findOne({ "name" : subsData.items[i].snippet.title }) ) { if ( db.channels.find({ name: subsData.items[i].snippet.title }) != null ) { idsArray.push(subsData.items[i].snippet.resourceId.channelId); subsArray.push(subsData.items[i].snippet.title); imgsArray.push(subsData.items[i].snippet.thumbnails.default.url); } }但它拋出:TypeError: Cannot read property 'find' of undefined正如您從代碼中看到的,我也嘗試使用 mongoose 代替,兩者都在我的項目中配置,但使用 mongoose 模式它什么也沒做,就好像它findOne總是正確的一樣。所以它沒有拋出任何錯誤,但基本上不起作用,數組中的所有通道都被接受。我想知道這是否是由于模式之間的不完美匹配而發生的,因為我從已經存在的 mongodb 數據手動重新創建了模式“Chann”,而且我不能 100% 確定我到處正確地編寫了數組的對象。
檢查數組值,如果存在于 mongodb 集合中,則推送到新數組中
胡說叔叔
2023-12-14 16:41:48