Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask 从pymongo游标获取特定属性_Flask_Pymongo - Fatal编程技术网

Flask 从pymongo游标获取特定属性

Flask 从pymongo游标获取特定属性,flask,pymongo,Flask,Pymongo,在我正在使用的Flask应用程序中,有一个登录端点,我需要在其中查询mongodb数据库并获取用户密码。当提供用户名时,我可以检索相应的用户记录,但我想获取用户的密码,这是用户记录的一部分。我如何才能做到这一点 @user.route('/login',methods = ['POST']) def login(): user_record = db.user.find({'username': request.json['username']}) #return passwor

在我正在使用的Flask应用程序中,有一个登录端点,我需要在其中查询mongodb数据库并获取用户密码。当提供用户名时,我可以检索相应的用户记录,但我想获取用户的密码,这是用户记录的一部分。我如何才能做到这一点

@user.route('/login',methods = ['POST'])
def login():
    user_record = db.user.find({'username': request.json['username']})
    #return password
如果我尝试
转储(用户记录)
,我会得到以下响应

[{"_id": {"$oid": "5d785f9537b9d0ebcde1850a"}, "username": "pavindu", "password": {"$binary":
"JDJiJDEyJFZUQ2QzV1RRUmMubmZ1b0FxeTYxdXVkbVYuS09ZWFZJSDFGYzJGbVJMQUllbWdEcFJtZjRx", "$type": "00"}, "createdAt":
{"$date": 1568169877345}}]
因为它返回一个列表,所以我想获取第一项并获取密钥“password”的值。下面是我在通过邮递员进行测试时尝试的内容和遇到的错误<代码>转储(用户记录)[0]返回
[
而不是字典

return dumps(user_record)[0]['password']
TypeError: string indices must be integers
编辑

这是我的完整文件。我可以查询数据库并获得结果,但无法从中获取特定属性。非常感谢您的帮助

from flask import Flask,request,Blueprint
from database import db
from bson import Binary, Code
from bson.json_util import dumps

user = Blueprint('user', __name__)

@user.route('/login',methods = ['POST'])
def login():
    user_record = db.user.find_one({'username': request.json['username']})
    return dumps(user_record)
我想获取
用户记录中的密码字段。我该怎么做?

编辑:

@user.route('/login',methods = ['POST'])
def login():
    user_record = db.user.find({'username': request.json['username']})
    #return password
我已经做了一些简化,但这在Python3.7/Mongo4.0上应该适用。如果这不起作用,那么首先要解决一个更基本的问题

from bson.json_util import dumps
from pymongo import MongoClient
import datetime

connection = MongoClient('localhost', 27017)
db = connection['yourdatabase']

db.testuser.insert_one({"username": "pavindu",
                    "password": "<password>",
                    "createdAt": datetime.datetime.now()})

request = {"username": "pavindu"}

def test_login():
    user_record = db.testuser.find_one({'username': request['username']})
    return dumps(user_record['password'])

print(test_login())

谢谢你的回答。我会尝试一下。但是我的问题是如果
dumps
返回一个列表,为什么不能对它执行列表操作呢?你对此有什么想法吗?我很惊讶dumps能工作(我假设它是json.dumps)由于它无法对游标对象或ObjectId进行编码,因此我怀疑发生了其他问题。您确定您没有执行列表(user_record)。您使用的是什么版本的python/pymongo?我添加了完整的代码,并在“编辑”下导入。请检查它。谢谢