2017-02-17 7 views
1

私はnode/expressで最初のapiを構築していて、JSONをさまざまなモデルにレンダリングする単純なJadeビューを作成しようとしています。私が持っているすべてのモデルの異なるビューを作成します。私はどんな反応でも反復し、結果をテーブルに吐き出すだけです。これを行う一般的なバージョンはありますか?Pug/Jadeで未知のJSONを反復する

これは私が私の急行ファイル内に持っているものです:

:私が持っている呼び出しを受けるための結果

extends layout 
block content 
    h1= title 
    table 
     each value, index in data 
      tr 
       td= index 
       td= value 

/* Post a STATE and send to update.jade view*/ 

router.post('/', function(req, res, next) { 
    State.build(req.body).save() 
     .then(function(State){ 
      res.render("update", { 
       title: "States Post", 
       data: State 
      }); 

     }) 
}); 

/* GET all STATES and send to a update.jade view */ 

router.get('/', function(req, res, next) { 
    State.findAll().then(function(States){ 
     res.render("update", { 
      title: "States Get All", 
      data: States 
     }); 
    }) 
}); 

そして、ここで私は現在、ヒスイのビューを持っているものです

States Get All 

0 [object SequelizeInstance:State] 

そして、それが吐き出すポストのため:

States Post 

dataValues [object Object] 
_previousDataValues [object Object] 
_changed [object Object] 
$modelOptions [object Object] 
$options [object Object] 
hasPrimaryKeys true 
__eagerlyLoadedAssociations 
isNewRecord false 
_customGetters [object Object] 
_customSetters [object Object] 
validators [object Object] 

(etc. it goes on...) 

助けをいただければ幸いです。 Postgresデータベースに格納しておき、Sequelizeを使用していればそれが役に立ちます。

答えて

1

あなたの杖の使用をすべてのkeyは、以前に定義されたsequelizeモデルの属性

router.post('/', function(req, res, next) { 
    State.build(req.body).save() 
     .then(function(State){ 
      res.render("update", { 
       title: "States Post", 
       data: State.toJSON() // will return simple object 
      }); 

     }) 
}); 

router.get('/', function(req, res, next) { 
    State.findAll().then(function(States){ 
     res.render("update", { 
      title: "States Get All", 
      data: return States.map((state) => { return state.toJSON(); }); // this will create an array of simple objects 
     }); 
    }) 
}); 

あなたがすることもできEDIT

あるkey : valueペアを持つjavascriptオブジェクトを返しますsequelizeモデルのすべてのインスタンスに方法、 findAll()メソッドで{ raw: true }を使用してください。モデルのインスタンスが作成されません。これは、書式設定なしでデータベースから指定された列を単に返すだけです。

trueの場合、sequelizeは

+0

感謝をクエリの結果をフォーマットしようとする、または結果からモデルのインスタンスを構築しません!これは私が必要としたものです - シンプルで効果的です。 – evdillon

0

あなたがする必要があるすべては、生のJSONコードを表示し、あなたがこのような何か行う可能性がある場合:あなたが各要素に何かをする必要がある場合のように反復自体は、重要である場合

block content code=JSON.stringify(data, null, 2)

をあなたのJSONデータでは、あなたは(私がここに実現してきた1がリストされていますが、おそらく何らかの形で、テーブルと似た何かができる)再帰的なミックスインとのデータトラバーサルを実現することができます。

mixin traverse(data) 
    if Array.isArray(data) 
    ul 
     each value in data 
     li 
      +traverse(value) 
    else if typeof data === 'object' 
    dl 
     each value, index in data 
     dt=index 
     dd 
      +traverse(value) 
    else 
    span=data 
関連する問題