Разрушение документа мангуста

#javascript #mongodb #mongoose

Вопрос:

Используя мангуста в своем проекте, я столкнулся с проблемой. Я хочу найти все документы, в которых есть такая пара ключей и значений role: USER . Я могу получить список документов, но я не могу получить из него значения определенных полей, как бы я ни старался.
Вот мой код:

 const getUsersList = async () =gt; {  const users = await userModel.find({ role: USER });   //also I truing:  //In each case, I get undefined  const users = await userModel.find({ role: USER }).userName;  ////  const users = await userModel.find({ role: USER }).exec();  ////  Document.prototype.toObject(users);  ////  JSON.stringify(users).userName }  

Запрос определенно получает документ, потому console.log(users) что в нем перечислены документы.

 [  {  _id: new ObjectId("618b1a587d57e9c8e78865e1"),  userName: 'Username1',  name: 'Fullname1',  email: 'email1@gmail.com',  password: 'Password1',  status: 'INVITED',  role: 'USER',  __v: 0  },  {  _id: new ObjectId("618b1a6e7d57e9c8e78865e5"),  userName: 'Username3',  name: 'Fullname2',  email: 'email2@gmail.com',  password: 'Password2',  status: 'INVITED',  role: 'USER',  __v: 0  } ]  

Судя по документации мангуста, я все делаю правильно. Также рекомендуется преобразовать документ в объект с помощью toObject() , но мангуст не находит такого метода для запроса
Моя схема:

 const userSchema = new Schema(  {  userName: { type: String, unique: true, required: true },  name: { type: String, required: true },  email: { type: String, unique: true, required: true },  password: { type: String, required: true },  confirmationCode: { type: String, required: false },  status: { type: String, required: true, default: STATUS.INVITED },  role: { type: String, required: true, default: USER },  }, );  

Ответ №1:

Это массив, поэтому попытка получить имя пользователя не сработает. Вам нужно получить конкретный элемент. Попробуй это:

 const userResponse = await userModel.find({ role: USER }) const firstUserName = userResponse[0].userName