2014-06-17 18 views
1

我嘗試使用loopback和遠程postgresql數據庫來製作項目。 表格已填充,我在pgAdmin中看到它。loopback postgresql只提取「id」字段

我有這樣的代碼:

/models/language.js

var loopback = require('loopback'), 
app = require('../app'); 


loopback.createModel('languages', { 
id: Number, 
des_id: Number, 
iso: String, 
codepage: String 
}) 


app.model('languages', { dataSource: 'pg' }); 

(我沒有用一個文件存儲所有模型定義的概念同意,但我同意。 LDL很酷!^ _ ^)

「loopback-explorer」成功顯示了我的REST的新模型。但是當我嘗試獲取某些內容時,它只會選擇「id」字段。

[ { id: 1 }, 
    { id: 4 }, 
    { id: 6 }, 
    { id: 7 }, 
    { id: 8 }, 
    { id: 9 }, 
... 
] 

它統計了正確的實體數量。

該代碼有沒有fintering的效果:

app.models.languages.find({ 
    where: {'des_id': 14360}}, 
function(err, langs) { 
console.log(langs) 
}); 

我得到相同的數據量在以前的輸出。

我想這

app.models.languages.find({ 
    fields: {id: false} 
    }, 
    function(err, langs) { 
    console.log(langs) 
    }); 

同樣的效果。

我嘗試沒有屬性defenition創建模型:

loopback.createModel('languages', {}) 

同樣的效果。

app.datasources.pg.discoverModelProperties('languages', function(err, props) { 
    console.log(props); 
}) 

顯示正確的方案

我哪裏錯了?

回答

0

這段代碼:

loopback.createModel('languages', { 
    ... 
}) 

我創建了一個沒有任何地方使用的一些對象(模型定義?)。另外創建者是基類「類」loopback而不是實例應用程序app。 而這種代碼:

app.model('languages', { dataSource: 'pg' }); 

創造了新的模型,該模型在app.models但沒有任何架構定義可用。這就是爲什麼我只有id-s而沒有其他字段。

正確方法:

var loopback = require('loopback'), 
    app = require('../app'); 

var Langs = app.datasources.pg.createModel('languages', { 
    ... 
}) 

app.model(Langs);