Mongdb не удалось получить документ при передаче идентификатора переменной

#mongodb #graphql

#mongodb #graphql

Вопрос:

Я использую распознаватель graphql для получения документа отношения из базы данных mongodb.

 const resolvers = {
  User: {
    friends: async (parent, __, ctx) => {
      let friend = await ctx.db
         .collection("friends")
         .find({userID: "hardcodeID"})
         .toArray();  
      
     return friend; // work!
    }
  }
}
  

При передаче идентификатора от родителя произойдет сбой. Я печатаю его как parent._id. Да, он возвращает значение идентификатора. В чем причина возникновения этой проблемы? я предполагаю, что родитель._id равно нулю, когда внутри метода find . Но, это асинхронная функция ожидания, должна ли получить значение ya?

  const resolvers = {
  User: {
    friends: async (parent, __, ctx) => {
      let friend = await ctx.db
         .collection("friends")
         .find({userID: parent._id})
         .toArray();  
      
     console.log(parent_.id) // someIdFromParent
     return friend; // []
    }
  }
  

Ответ №1:

Попробуйте вызвать .toString() on parent._id . Глядя на ваш пример, где .find({userID: "hardcodeID"}) все работало нормально, это наводит на мысль, что в вашей freinds схеме userID указано как a String , а ваша передача выглядит как an ObjectID .

  const resolvers = {
  User: {
    friends: async (parent, __, ctx) => {
      let friend = await ctx.db
         .collection("friends")
         .find({userID: parent._id.toString()})
         .toArray();  
      
     return friend;
    }
  }
  

Комментарии:

1. Добро пожаловать 🙂 @Wilker