Ошибка `TypeError: string indices must be integers, not 'str'` возникает, потому что вы пытаетесь обратиться к элементам строки, используя строковые индексы, а это возможно только для списков и словарей.
В вашем коде есть строка `for account in accounts:`. Если `accounts` — это результат выполнения `users.find_one({})`, то это будет словарь (или `None`, если ни одной записи не найдено). Однако вы перебирать его как список, что вызывает эту ошибку.
Вот как можно исправить ваш код:
```python
@app.route('/check_account', methods=['GET', 'POST'])
def check_account():
account = users.find_one({}) # Получаем один аккаунт
# Проверяем, что аккаунт найден
if account:
# Сравниваем значения полей 'name' и 'password'
if account['name'] == 'test' and account['password'] == '123':
return f'Success! {account["name"]} : {account["password"]}'
else:
return 'error!'
else:
return 'No account found!'
```
В этом исправленном коде:
1. Мы сразу получаем один аккаунт из базы данных с помощью `find_one()`, и эта переменная `account` содержит словарь.
2. Затем мы проверяем, существует ли `account`. Если существует, выполняем проверки.
3. Мы также исправили использование переменных `name` и `password`, чтобы ссылаться на значения из словаря `account`.
Таким образом, исправив логику обработки данных, вы удаляете эту ошибку.