Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

258
Visualizações
¿Cómo pasar una lista del backend del matraz a un frontend de reactjs?

Estoy trabajando con una API tranquila, escrita por un ex compañero de trabajo, cuando uso un GET para enviar un json desde la API del matraz a la interfaz y luego invoco el valor en el json, obtengo una cadena en lugar de una matriz, la lista Se ve como esto

['ETH/BTC','LTC/BTC','BNB/BTC']

Esto es lo que creo que es relevante del código

La ruta:

 @bp.route('/fetch_bots_names', methods=['GET']) def fetch_bots_names(): user_id = current_user.get_id() bots = db.session.query(Bot).all() viewable_bots = db.session.query(BotUserCanView).all() user_bots = [] names = [] for x in bots: ub = get_bot_data_as_dict(x) if ub != None: names.append(ub['name']) return {'ok': True, 'msg':'Success', 'data': json.dumps(names)}, 200

El JS para obtener los datos.

 const [botnames, setBotsNames] = useState([]); if(savedStrats.length==0){ fetch('/auth/fetch_bots_names', {method: 'GET'}) .then(res => {return res.text()}).then(response => { try { let r = JSON.parse(response); setBotsNames(r['data']); } catch { console.log(response); } }); }

y como señalé, el valor de botnames es una cadena como el ejemplo, pero lo necesito como una matriz (¿creo que una matriz JS?) para hacer un menú desplegable con los elementos de la lista, gracias de antemano

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede usar jsonify para convertir sus datos en formato JSON y enviarlos como respuesta.
Puede usar argumentos de palabras clave o pasar un dict.
La documentación explica claramente el uso.

 from flask import jsonify @bp.route('/fetch_bots_names', methods=['GET']) def fetch_bots_names(): bot_names = [bot.name for bot in Bot.query.all()] return jsonify({ 'ok': True, 'msg':'Success', 'data': bot_names })

En React usas Fetch Api así.

 fetch('/auth/fetch_bots_names') .then(resp => resp.json()) .then(data => { setBotsNames(data.data); });

No he probado el código, pero debería funcionar.

Es posible que desee echar un vistazo a Flask-Marshmallow si desea enviar conjuntos de datos más grandes.
Aquí hay un ejemplo rápido usando Flask-Marshmallow en combinación con marshmallow-sqlalchemy.

 from flask import Flask from flask import jsonify from flask_sqlalchemy import SQLAlchemy from flask_marshmallow import Marshmallow app = Flask(__name__) db = SQLAlchemy(app) ma = Marshmallow(app) class Bot(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String) class BotSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Bot with app.app_context(): db.drop_all() db.create_all() bots = [Bot(name=f'bot-{i+1}') for i in range(5)] db.session.add_all(bots) db.session.commit() @app.route('/bots') def bots(): bots = Bot.query.all() bot_schema = BotSchema(many=True) bot_data = bot_schema.dump(bots) return jsonify(data=bot_data)

El resultado de la consulta se ve así.

 { "data": [ { "id": 1, "name": "name-1" }, { "id": 2, "name": "name-2" }, { "id": 3, "name": "name-3" }, { "id": 4, "name": "name-4" } ] }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda