7
respostas

banco de dados retorna vazio

boa tarde refiz todos os passos e vi as solicitacao para conferir os passo como solicitado na topico anterior

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

7 respostas

Olá Everton.
Não entendi sua duvida.
Pode explicar melhor o que está tentando fazer.
Aguardo seu feedback.

ao fazer os passo o json esta retornando em branco nao retorna as informacoes

Ola amigo.
Vou tentar lhe ajudar.
Essas variáveis (process.env.DB_USER, process.env.DB_PASSWORD, process.env.CONNECT_STRING) são lidas do arquivo .env, que deveria conter suas credenciais de conexão com o banco.
Como elas estão undefined, o Node.js não está conseguindo autenticar no Oracle Database e então ele não acessa a coleção “clientes”.
Crie (ou edite) o arquivo .env na raiz do seu projeto
Exemplo de conteúdo:

DB_USER=ADMIN
DB_PASSWORD=SuaSenhaDoBancoAqui
CONNECT_STRING=g9e77c5570f9dab-doguitodb.adb.sa-saopaulo-1.oraclecloudapps.com:1522/********_high.adb.oraclecloud.com
  • DB_USER → geralmente ADMIN (ou o usuário que você criou)
  • DB_PASSWORD → a senha que você definiu ao criar o banco
  • CONNECT_STRING → pegue no painel do Oracle Cloud:

Vá até o Autonomous Database no OCI.
Clique no nome do banco (ex: doguitodb).
Clique em Database Connection.
Escolha “Instance Walletless Connection (mTLS)” e copie o campo Connection String (por exemplo, termina com _high.adb.oraclecloud.com).
No seu código Node.js, garanta que o .env está sendo lido
No início do seu server.js ou cliente-service.js, adicione:

require('dotenv').config();

Reinicie o servidor Node
Depois de salvar o .env, pare e inicie novamente:

node server.js

Agora, no log, você deve ver algo como:

process.env.DB_USER: ADMIN
process.env.DB_PASSWORD: ****
process.env.CONNECT_STRING: g9e77c5570f9dab...
Criando pool de conexões...
Listening on port 3000

Teste o endpoint novamente
Acesse no navegador ou via curl:
http://168.138.151.172:3000/clientes

Se tudo estiver correto, deve retornar:

[
  {
    "_id": "609bbc8e0aeb66ab3df892f",
    "nome": "Paulo Teste",
    "email": "paulo@gmail.com"
  }
]

Analisa ai e me retorne o resultado.
Bons estudos.

o meu ja fiz isso ja configurei e testei diversas vezes
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
o projeto foi terminado so o json que nao retorna tudo isso eu ja criei mas o json ainda continua retornando []

Não desista ainda amigo....
Tenho ainda algumas balas...
O driver oracledb da Oracle não lê coleções JSON automaticamente como tabelas SQL .
Você precisa usar a API SODA (Simple Oracle Document Access) para buscar os documentos.
Se o seu código usa algo como:

const result = await connection.execute('SELECT * FROM clientes');

ele vai retornar vazio ([]), porque clientes é uma coleção JSON, não uma tabela relacional.
Tente este modelo no seu arquivo cliente-service.js (ou no serviço que faz o GET /clientes):

const oracledb = require('oracledb');
require('dotenv').config();

async function listarClientes() {
  let connection;
  try {
    connection = await oracledb.getConnection({
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      connectString: process.env.CONNECT_STRING
    });

    // Obter o SODA database
    const soda = connection.getSodaDatabase();

    // Acessar a coleção JSON "clientes"
    const collection = await soda.openCollection('clientes');

    // Buscar todos os documentos
    const docs = await collection.find().getDocuments();

    // Converter os documentos para JSON
    const clientes = docs.map(d => d.getContent());

    return clientes;

  } catch (err) {
    console.error('Erro ao listar clientes:', err);
    return [];
  } finally {
    if (connection) {
      try {
        await connection.close();
      } catch (err) {
        console.error('Erro ao fechar conexão:', err);
      }
    }
  }
}

module.exports = { listarClientes };

E no seu controller (por exemplo):

const express = require('express');
const router = express.Router();
const { listarClientes } = require('../services/cliente-service');

router.get('/clientes', async (req, res) => {
  const clientes = await listarClientes();
  res.json(clientes);
});

module.exports = router;

Explicação

  • getSodaDatabase() → acessa o banco JSON do Oracle.
  • openCollection('clientes') → abre sua coleção “clientes”.
  • find().getDocuments() → busca todos os documentos.
  • getContent() → pega o conteúdo JSON puro.

Sem o uso do SODA, SELECT * FROM clientes não retorna nada, mesmo que os documentos existam no banco.
Se quiser confirmar que o banco realmente contém os documentos, execute no SQL Developer Web (no Oracle Database Actions):

SELECT json_serialize(document) AS doc
FROM clientes;

Ou, se for via SODA REST (no URL do banco Oracle):

https://g9e77c5570f9dab-doguitodb.adb.sa-saopaulo-1.oraclecloudapps.com/ords/admin/soda/latest/colecoes/clientes/

Testa ai e me avise .
Bons estudos.

um outro estudante do grupo descobriu o erro. ao criar o json no Oracle database action ele vem marcado como mongoDB compativel e na aula ja esta desmarcado e o professor nem comenta
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

nao sei se ao marcar vc cria o json com id, nome , e email e por isso apresenta o erro . no meu caso ja tinha mexido tanto que nao adiantou mas iniciei tudo do zero e acabou que retornou da forma como deveria
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá amigo.
Fico feliz que tenha encontrado a solução.
E obrigado por compartilhar aqui com a gente.
Pode fechar este tópico agora.
Qualquer duvida comente ai.
Bons estudos.