Derby アプリで保存されていないデータを含む MongoDB コレクションがあります。それに対してクエリを実行し、Derby アプリにプルしたいと考えています。
それで、私はそれを理解しました。これを行うコードは次のとおりです。
get '/:year', (page, model, params) ->
query = model.query 'years',
where:
year: (parseInt params.year, 10)
limit: 1
model.subscribe query, (err, year) ->
if err
console.log err
page.render
y: year.get(),
year: params.year
唯一の問題は、ドキュメントにダービー ID がないことです。そのため、MongoDB オブジェクト ID (_id) がダービーID に設定されます。model.get()
が返すJSON の例を次に示します: https://gist.github.com/0a5426d2b28a940e8803
クエリの前に objectid が何であるかを知る方法がありません。最近返された id ( currID
) がオブジェクトのトップ レベルにあれば、クエリを実行してモデル参照を設定するだけで済みます。今のところ、それを回避するためにハックを作成しましたが、思ったほどスムーズではありません。コードは以下のとおりです。
getId = (obj, year) ->
for x of obj
return obj[x].id if obj[x].year is year
-1
また、すでに画面に表示されているテンプレートを破棄せずにテンプレートを更新する方法はありますか? 完全に実行する代わりに、 ?page.render
を実行するだけです。template.render
ありがとう