(Mongoose)如何在Users集合中搜索会话数组属性中对象内部的令牌



这是我的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;

所以我想做的是只使用会话令牌来找到一个用户,但事实证明这有点困难,因为每个用户的会话数组中可能有多个对象,我想搜索所有这些对象。

您可以像这样查询

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/

最新更新