Add database options to ParseServer constructor and pass to MongoStorageAdapter

This commit is contained in:
steven-supersolid
2016-03-10 16:49:45 +00:00
parent f08b0b32bb
commit dbf2afc5ea
3 changed files with 16 additions and 3 deletions

View File

@@ -10,12 +10,14 @@ const MongoSchemaCollectionName = '_SCHEMA';
export class MongoStorageAdapter { export class MongoStorageAdapter {
// Private // Private
_uri: string; _uri: string;
_options: Object;
// Public // Public
connectionPromise; connectionPromise;
database; database;
constructor(uri: string) { constructor(uri: string, options: Object) {
this._uri = uri; this._uri = uri;
this._options = options;
} }
connect() { connect() {
@@ -23,7 +25,7 @@ export class MongoStorageAdapter {
return this.connectionPromise; return this.connectionPromise;
} }
this.connectionPromise = MongoClient.connect(this._uri).then(database => { this.connectionPromise = MongoClient.connect(this._uri, this._options).then(database => {
this.database = database; this.database = database;
}); });
return this.connectionPromise; return this.connectionPromise;

View File

@@ -24,6 +24,7 @@ let adapter = MongoStorageAdapter;
let dbConnections = {}; let dbConnections = {};
let databaseURI = DefaultDatabaseURI; let databaseURI = DefaultDatabaseURI;
let appDatabaseURIs = {}; let appDatabaseURIs = {};
let appDatabaseOptions = {};
function setAdapter(databaseAdapter) { function setAdapter(databaseAdapter) {
adapter = databaseAdapter; adapter = databaseAdapter;
@@ -37,6 +38,10 @@ function setAppDatabaseURI(appId, uri) {
appDatabaseURIs[appId] = uri; appDatabaseURIs[appId] = uri;
} }
function setAppDatabaseOptions(appId: string, options: Object) {
appDatabaseOptions[appId] = options;
}
//Used by tests //Used by tests
function clearDatabaseURIs() { function clearDatabaseURIs() {
appDatabaseURIs = {}; appDatabaseURIs = {};
@@ -50,7 +55,7 @@ function getDatabaseConnection(appId: string, collectionPrefix: string) {
var dbURI = (appDatabaseURIs[appId] ? appDatabaseURIs[appId] : databaseURI); var dbURI = (appDatabaseURIs[appId] ? appDatabaseURIs[appId] : databaseURI);
let storageAdapter = new adapter(dbURI); let storageAdapter = new adapter(dbURI, appDatabaseOptions[appId]);
dbConnections[appId] = new DatabaseController(storageAdapter, { dbConnections[appId] = new DatabaseController(storageAdapter, {
collectionPrefix: collectionPrefix collectionPrefix: collectionPrefix
}); });
@@ -62,6 +67,7 @@ module.exports = {
getDatabaseConnection: getDatabaseConnection, getDatabaseConnection: getDatabaseConnection,
setAdapter: setAdapter, setAdapter: setAdapter,
setDatabaseURI: setDatabaseURI, setDatabaseURI: setDatabaseURI,
setAppDatabaseOptions: setAppDatabaseOptions,
setAppDatabaseURI: setAppDatabaseURI, setAppDatabaseURI: setAppDatabaseURI,
clearDatabaseURIs: clearDatabaseURIs, clearDatabaseURIs: clearDatabaseURIs,
defaultDatabaseURI: databaseURI defaultDatabaseURI: databaseURI

View File

@@ -84,6 +84,7 @@ function ParseServer({
push, push,
loggerAdapter, loggerAdapter,
databaseURI = DatabaseAdapter.defaultDatabaseURI, databaseURI = DatabaseAdapter.defaultDatabaseURI,
databaseOptions,
cloud, cloud,
collectionPrefix = '', collectionPrefix = '',
clientKey, clientKey,
@@ -120,6 +121,10 @@ function ParseServer({
DatabaseAdapter.setAppDatabaseURI(appId, databaseURI); DatabaseAdapter.setAppDatabaseURI(appId, databaseURI);
} }
if (databaseOptions) {
DatabaseAdapter.setAppDatabaseOptions(appId, databaseOptions);
}
if (cloud) { if (cloud) {
addParseCloud(); addParseCloud();
if (typeof cloud === 'function') { if (typeof cloud === 'function') {