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