(猫鼬)如何在用户集合中搜索会话数组属性内的对象内的令牌
Posted
技术标签:
【中文标题】(猫鼬)如何在用户集合中搜索会话数组属性内的对象内的令牌【英文标题】:(Mongoose) How to search Users collection for a token that is inside an object inside the sessions array property 【发布时间】:2020-11-08 04:15:50 【问题描述】:这是我的 User.model.js 文件:
const mongoose = require('mongoose');
const jwt = require('jsonwebtoken');
const crypto = require('crypto');
const UserSchema = new mongoose.Schema(
username:
required: true,
type: String,
minlength: 4,
maxlength: 128,
trim: true
,
displayname:
required: true,
type: String,
minlength: 4,
maxlength: 128,
trim: true
,
email:
required: true,
type: String,
minlength: 8,
maxlength: 256,
,
password:
required: true,
type: String,
minlength: 8
,
sessions: [
token:
type: String,
required: true
,
expiresAt:
type: Number,
required: true
]
);
// Some irrelevant functions
const User = mongoose.model('User', UserSchema);
module.exports = User;
所以我想做的是仅使用会话令牌来查找用户,但事实证明这有点困难,因为每个用户的会话数组中可以有多个对象,我想搜索所有这些对象。
【问题讨论】:
【参考方案1】:可以这样查询
const user = await User.findOne("sessions.token": session_token)
或
const user = await User.findOne(sessions: $elemMatch: token: session_token )
有关详细信息,您可以参考文档。
https://docs.mongodb.com/manual/tutorial/query-array-of-documents/
【讨论】:
以上是关于(猫鼬)如何在用户集合中搜索会话数组属性内的对象内的令牌的主要内容,如果未能解决你的问题,请参考以下文章