2015-09-07 2 views
0

Моя цель - иметь mongoDB с несколькими таблицами (коллекции документов), каждый для каждого пользователя. Итак, как я могу «переключиться» между несколькими таблицами во время выполнения (определенная таблица известна после входа в систему определенного пользователя)? У меня есть этот код пропущен ...Как переключаться между несколькими таблицами (документами) в angularjs и mongoose

var mongoose = require('mongoose'), Schema = mongoose.Schema; 

var TicketSchema = new Schema({ 
    Unit_descriptor: String, 
    ... 
    Total_tons: Number 
}, { strict: false }); 

module.exports = mongoose.model('tickets_user1', TicketSchema); 

... и я хочу, чтобы иметь возможность переключения таблицы для текущего пользователя, например: таблицы могут иметь суффикс с именем пользователя, как в коде выше.

Я попытался создать экспортируемую функцию под названием позже из контроллера и замены таблицы, как это:

var auth = require('../../auth/auth.service.js'); 
... 
module.exports.initTable = function initTable() { 
    module.exports = mongoose.model('tickets_user2', TicketSchema); 
}; 

... который не поменяться таблицы, данные пользователя User1 все еще на месте.

Итак, как я мог достичь этого? СПАСИБО.

ответ

0

Я решил эту проблему, создав вторую модель, как это:

var mongoose = require('mongoose'), Schema = mongoose.Schema; 

var TicketSchema = new Schema({ 
    Unit_descriptor: String, 
    ... 
    Total_tons: Number 
}, { strict: false }); 

var table = ''; 

function reloadForUser(user){ 
    var userTable = user.table; 
    if(userTable != undefined) { 
    table = userTable; 
    } 
    return mongoose.model(table, TicketSchema, table); 
} 

exports.reloadForUser = reloadForUser; 

и тогда, когда мне это нужно, я просто требуют его и вызвать определенную функцию:

Ticket = require('./reload.model'); 
Ticket = Ticket.reloadForUser(username); 
Смежные вопросы