2016-03-14 99 views
0

假設每個用戶都有大量數據,無需將這些數據存儲在單個表中。我想將每個用戶的數據存儲在單獨的數據庫中以便更快地查詢。如何在環回中以編程方式更改數據源

我希望當任何用戶登錄環回時,根據用戶模型中存儲的用戶連接字符串更改數據集。

我閱讀所有的迴環文檔,並嘗試這麼多的做法,但我不能實現這一點。

我嘗試這種在服務器/ server.js:

app.use(loopback.context()); 
app.use(loopback.token()); 
app.use(function (req, res, next) { 
    if (!req.accessToken) { 
    return next(); 
    } 
    app.models.User.findById(req.accessToken.userId, function(err, user) { 
    if (err) { 
     return next(err); 
    } 
    if (!user) { 
     return next(new Error('No user with this access token was found.')); 
    } 
    console.log('server.js'); 
    var loopbackContext = loopback.getCurrentContext(); 
    if (loopbackContext) { 
     loopbackContext.set('currentUser', user); 
    } 

    var DataSource = require('loopback-datasource-juggler').DataSource; 
    var ds = new DataSource('memory'); 
    app.datasources.db= ds;// <----- IT DOES'NT WORKING  
    next(); 
    }); 

}); 

但IT一點兒也不正常工作(標記代碼)。

任何想法來解決這個問題?

回答

1

您可以使用attachTo()函數根據條件附加數據源。

app.use(loopback.context()); 
app.use(loopback.token()); 
app.use(function (req, res, next) { 
    if (!req.accessToken) { 
    return next(); 
    } 
    app.models.User.findById(req.accessToken.userId, function(err, user) { 
    if (err) { 
     return next(err); 
    } 
    if (!user) { 
     return next(new Error('No user with this access token was found.')); 
    } 
    //console.log('server.js'); 
    var loopbackContext = loopback.getCurrentContext(); 
    if (loopbackContext) { 
     loopbackContext.set('currentUser', user); 
    } 
    // This way you can attach memory datasource to model. 
    // This only covers models defined using app.model(); 
    var models = app.models(); 
    models.foreach(function(model) { 
     model.attachTo(app.dataSources.memory); 
    }); 
    next(); 
    }); 

}); 
在datasource.json

也用數據源定義,存儲器

{ 
"memory": { 
    "name": "memory", 
    "connector": "memory" 
    } 
} 

請過請參閱本:app.models()

+0

YESSS,它的工作只是爲用戶模式是沒有辦法「attachTo」適用於所有的模式呢? – viam

+1

@viam請參閱最新的答案。試圖尋找將數據源附加到每個模型但不成功的功能。儘管已經給出了替代方案。 –

相關問題