首页 > 解决方案 > MongoDB - 获取用户制作的记录

问题描述

我正在使用 Mongodb,并且想知道如何获取用户制作的记录。在下面的示例中,我必须使用不同的电子邮件(createdBy)记录每个人,但是如何获取当前登录用户的记录?

架构结果:

var resultSchema = new Schema({
test: { type: String, required: true, lowercase: true},
status: { type: String, required: true, lowercase: true},
date: { type: Date, required: true},
amount: { type: Number, required: true},
createdBy: { type: String, required: true},
});

架构用户:

var userSchema = new Schema({
email: { type: String, required: true, lowercase: true},
username: { type: String, required: true, lowercase: true},
password: { type: String, required: true}
});

数据库:

"recipe": [
    {
        "_id": "5b7af572a1051b1b18aec627",
        "test": "asassdasdasd",
        "status": "waiting",
        "date": "2018-08-06T22:00:00.000Z",
        "amount": 2,
        "createdBy": "test@outlook.com",
        "__v": 0
    }
]

"recipe": [
    {
        "_id": "5b7af572a1051b1b18aec621",
        "test": "test2",
        "status": "waiting",
        "date": "2018-08-06T22:00:00.000Z",
        "amount": 2,
        "createdBy": "notTest@outlook.com",
        "__v": 0
    }
]

我试过这个,但这返回空:

router.get('/userResults', (req, res) => {
Result.find({createdBy: req.body.createdBy}, (err, result) => {
  })

})

标签: mongodb

解决方案


要说用户是否登录并识别登录的用户,我相信你有一些机制来获取当前用户的电子邮件 ID。因此,理想情况下,您应该有权访问已登录并进行 API 调用的用户的电子邮件 ID。

  • 提供一个中间件来解析每个请求的电子邮件 ID,而不是进行数据库调用来检查用户的电子邮件 ID。
  • 查询:db.resultSchema.find({createdBy: parsed_email_id_from_api_request}

使用 JWT 执行此操作的一种方法是使用中间件解析令牌并将电子邮件或任何其他相关字段转发到您进行数据库调用以检查“结果”集合的请求。


推荐阅读