Wiem, że to stary post... chciałem tylko wspomnieć o pewnym sposobie komunikacji nodejs z Oracle bez dodatkowych modułów.
Skonfiguruj Oracle tak, aby mógł tworzyć i odbierać żądania http. Można to zrobić na kilka sposobów:
Najłatwiej jest włączyć bramkę epg:
Możesz także skonfigurować modplsq:
lub odbiornik Apex:
Następnie w węźle js wykonaj standardowy http.get:
http.get("http://localhost/accessor/myschema.my_procedure?x=1&y=2", function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
Niezależnie od tego, które podejście... zabezpiecz oracle tak, aby odpowiadała tylko na adres IP serwera nodejs. Więc jeśli działa na lokalnym hoście:
if owa_util.get_cgi_env('REMOTE_ADDR') = '127.0.0.1' then
--ok
else
-- fail
end if;
Blokuj również wywołania każdego innego pakietu i procedury. Jest na to kilka sposobów, w zależności od wybranej ścieżki.
Upewnij się, że robisz to co najmniej:
- utwórz białą listę elementów, które można wywołać z sieci
- wymagaj, aby wszystkie adresy URL zawierały nazwę schematu, taką jak:myuser.myprocedure
- upewnij się, że pierwsza część adresu URL (aż do ścieżki zapytania) zawiera tylko a-z 0-9
- naprawdę dobra biała lista zajmie się większością tych elementów
Masz to...nie musisz się martwić, jeśli moduł się zepsuje lub przestanie działać w następnym wydaniu.
ORAZ... możesz łatwo komunikować się z Oracle do węzła:
- apex_web_service.make_rest_request
- utl_http