【问题标题】:How to switch among multiple tables (documents) in angularjs and mongoose如何在angularjs和mongoose中的多个表(文档)之间切换
【发布时间】:2016-02-26 20:19:32
【问题描述】:

我的目标是让 mongoDB 包含多个表(文档集合),每个表都针对某个用户。那么如何在运行时在多个表之间“切换”(在特定用户登录后知道特定表)? 我把这段代码剪掉了……

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的数据还在。

那么,我该如何实现呢?谢了。

【问题讨论】:

    标签: javascript angularjs mongoose


    【解决方案1】:

    我通过像这样创建第二个模型解决了这个问题:

    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);
    

    【讨论】:

      猜你喜欢
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 2019-09-02
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      相关资源
      最近更新 更多