node-oracledb/examples/dbconfig.js

118 lines
5.2 KiB
JavaScript

/* Copyright (c) 2015, 2023, Oracle and/or its affiliates. */
/******************************************************************************
*
* This software is dual-licensed to you under the Universal Permissive License
* (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License
* 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose
* either license.
*
* If you elect to accept the software under the Apache License, Version 2.0,
* the following applies:
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* NAME
* dbconfig.js
*
* DESCRIPTION
* Holds the credentials used by node-oracledb examples to connect to the
* database. Production applications should consider using External
* Authentication to avoid hard coded credentials.
*
* To create a database user, see
* https://blogs.oracle.com/sql/post/how-to-create-users-grant-them-privileges-and-remove-them-in-oracle-database
*
* Applications can set the connectString value to an Easy Connect string,
* or a Net Service Name from the tnsnames.ora file or an external naming
* service, or it can be the name of a local Oracle Database instance.
*
* If node-oracledb is linked with Instant Client, then an Easy
* Connect string is generally appropriate. The basic syntax is:
*
* [//]host_name[:port][/service_name][:server_type][/instance_name]
*
* Commonly just the host_name and service_name are needed
* e.g. "localhost/orclpdb1" or "example.com/XEPDB1"
*
* The Easy Connect syntax supports lots of options. To know more, please
* refer to the latest Oracle documentation on Easy Connect syntax:
* https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-B0437826-43C1-49EC-A94D-B650B6A4A6EE
*
* If using a tnsnames.ora file, the file can be in a default location such
* as $ORACLE_HOME/network/admin/tnsnames.ora or /etc/tnsnames.ora.
* Alternatively set the TNS_ADMIN environment variable and put the file in
* $TNS_ADMIN/tnsnames.ora.
*
* If connectString is not specified, the empty string "" is used which
* indicates to connect to the local, default database.
*
* External Authentication can be used by setting the optional property
* externalAuth to true. External Authentication allows applications to use
* an external password store such as Oracle Wallet, so that passwords
* do not need to be hard coded into the application. The user and password
* application. The user and password properties for connecting or creating
* a pool should not be set when externalAuth is true.
*
* TROUBLESHOOTING
* Refer to the Error Handling section in node-oracledb documentation
* to understand the different types of errors in both the Thin and Thick
* modes of node-oracledb:
* https://node-oracledb.readthedocs.io/en/latest/user_guide/exception_handling.html#errors-in-thin-and-thick-modes
*
*****************************************************************************/
const config = {
user: process.env.NODE_ORACLEDB_USER,
// Get the password from the environment variable
// NODE_ORACLEDB_PASSWORD. The password could also be a hard coded
// string (not recommended), or it could be prompted for.
// Alternatively use External Authentication so that no password is needed.
password: process.env.NODE_ORACLEDB_PASSWORD,
// For information on connection strings see:
// https://node-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html#connectionstrings
connectString: process.env.NODE_ORACLEDB_CONNECTIONSTRING,
// Setting externalAuth is optional. It defaults to false. See:
// https://node-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html#extauth
externalAuth: process.env.NODE_ORACLEDB_EXTERNALAUTH ? true : false,
};
// Set the NODE_ORACLEDB_WALLET_LOCATION and NODE_ORACLEDB_WALLET_PASSWORD
// environment variables for database connections that require wallets.
// For example, creating and dropping a user.
// See the README.md file in this directory for more details.
if (process.env.NODE_ORACLEDB_WALLET_PASSWORD) {
config.walletPassword = process.env.NODE_ORACLEDB_WALLET_PASSWORD;
}
if (process.env.NODE_ORACLEDB_WALLET_LOCATION) {
config.walletLocation = process.env.NODE_ORACLEDB_WALLET_LOCATION;
}
// Set the NODE_ORACLEDB_DBA_USER and NODE_ORACLEDB_DBA_PASSWORD environment
// variables for database operations which require SYSDBA privileges.
// For example, creating and dropping a user. See the README.md file in this
// directory for more details.
if (process.env.NODE_ORACLEDB_DBA_USER) {
config.DBA_user = process.env.NODE_ORACLEDB_DBA_USER;
}
if (process.env.NODE_ORACLEDB_DBA_PASSWORD) {
config.DBA_password = process.env.NODE_ORACLEDB_DBA_PASSWORD;
}
module.exports = config;