#javascript #typescript #mongoose #nestjs
Вопрос:
Я хочу получить ключ доступа к объекту, но он возвращает неопределенное значение, и я не знаю, почему
Это мой код
const docs = await this.walletModel.find({ status: 'Venus' }).select('user meteorite').populate('user', 'name extra.profilePic extra.thumbnail').lean() // @ts-ignore const userIds = docs.map(user =gt; Types.ObjectId(user?.user?._id)) const boughtUsers = await this.subscriptionModel.find({ user: { $in: userIds } }).select('-_id user') const reduced = docs.reduce((acc, curr) =gt; { // @ts-ignore if (boughtUsers.some(boughtUser =gt; { // @ts-ignore console.log(boughtUser, curr?.user?._id) // logging here // @ts-ignore return boughtUser?.user === curr?.user?._id })) return [...acc, {...curr}] return [...acc, {...curr, gift: true}] }, []) return reduced
он возвращается
как вы можете видеть, есть пользовательские ключи, но когда я пытаюсь войти в систему, он возвращается неопределенным
код
const docs = await this.walletModel.find({ status: 'Venus' }).select('user meteorite').populate('user', 'name extra.profilePic extra.thumbnail').lean() // @ts-ignore const userIds = docs.map(user =gt; Types.ObjectId(user?.user?._id)) const boughtUsers = await this.subscriptionModel.find({ user: { $in: userIds } }).select('-_id user') const reduced = docs.reduce((acc, curr) =gt; { // @ts-ignore if (boughtUsers.some(boughtUser =gt; { // @ts-ignore console.log(boughtUser?.user, curr?.user?._id) // logging here // @ts-ignore return boughtUser?.user === curr?.user?._id })) return [...acc, {...curr}] return [...acc, {...curr, gift: true}] }, []) return reduced
ВОЗВРАТ
Комментарии:
1. Что
typeof
такое покупаемый пользователь? напримерconsole.log(typeof boughtUser)
2. Это возвращаемый объект
3. консоль.журнал(boughtUser.constructor.name) дал бы тип. Вы пробовали console.log(JOSN.stringify(купленный пользователь)) ? Я думаю, что вы добавили // @ts-игнорировать по некоторым причинам. Я могу себе представить, что, удалив его, вы получите предупреждение о типе, которое вы могли бы использовать, чтобы понять, что не так с вашими типами.
Ответ №1:
Я попытался войти в систему с помощью Object.entries (), и он вернул что-то вроде этого
[ [ '$__', InternalCache { strictMode: false, selected: [Object], shardval: undefined, saveError: undefined, validationError: undefined, adhocPaths: undefined, removing: undefined, inserting: undefined, saving: undefined, version: undefined, getters: {}, _id: undefined, populate: undefined, populated: undefined, wasPopulated: false, scope: undefined, activePaths: [StateMachine], pathsToScopes: {}, cachedRequired: {}, session: null, '$setCalled': Set(0) {}, ownerDocument: undefined, fullPath: undefined, emitter: [EventEmitter], '$options': [Object] } ], [ 'isNew', false ], [ 'errors', undefined ], [ '$locals', {} ], [ '$op', null ], [ '_doc', { user: 6179847*******104c5715ee } ], [ '$init', true ] ]
Я добавил опцию lean в запрос покупателей и исправил свою проблему