#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