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


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


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
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
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;
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
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
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.