Upgrading from v2.x to 4.x ISSUE
Created by: jnystrom
OK, so I am getting around to upgrading. I have upgraded to v4.0. I have changed the Massive
connection call to use deasync
like you suggested here: #412 (closed).
All of a sudden I am not getting TONS of these errors:
Creating a duplicate QueryFile object for the same file -
/Users/johnnystrom/dev/remedy/coreApi/node_modules/massive/lib/scripts/tables-whitelist.sql
at loader.queryFiles.files.reduce (/Users/johnnystrom/dev/remedy/coreApi/node_modules/massive/lib/database.js:157:43)
at filesPromise.$p.then.files (/Users/johnnystrom/dev/remedy/coreApi/node_modules/massive/lib/database.js:156:38)
I am using the repository pattern and have multiple repositories that inherit ( using Typescript) from my MassiveRepository class. This all worked great with v2.X, now I am getting these errors along with:
error: too many connections for role <db connection name>
ideas?
Example
BaseRepo
import { IRepository } from './interfaces/IRepository';
import { inject, injectable } from 'inversify';
import Massive = require('massive');
import moment = require('moment');
import humps = require('humps');
import deasync= require('deasync');
@injectable()
export class MassiveRepository implements IRepository {
protected db: any;
constructor( @inject('config') private config) {
this.db = deasync(Massive(config.databaseUrl));
}
public findOne(tableName: string, criteria): Promise<any> {
return new Promise((resolve, reject) => {
if (criteria) {
this.db[tableName].findOne(humps.decamelizeKeys(criteria), (err, result: any) => {
if (!err) {
return resolve(humps.camelizeKeys(result));
} else {
return reject(err);
}
});
} else {
return reject('Criteria is required for using findOne');
}
});
}
Child Repo
import { MassiveRepository } from './massiveRepository';
import { IMessageRepository } from './interfaces/IMessageRepository';
import { inject } from 'inversify';
import { ClassifierModel, ClassifierClass, NlpMessage, ScoredMessage, Customer, MessageTag, MessageTagStatus } from '@remedy/models';
import humps = require('humps');
import _ = require('lodash');
export class MessageRepository extends MassiveRepository implements IMessageRepository {
constructor( @inject('config') config) {
super(config);
}