簡體   English   中英

在DerbyJS中使用從MongoDB導入的文檔

[英]Using imported docs from MongoDB in DerbyJS

我有一個MongoDB集合,其中包含未通過我的Derby應用程序保存的數據。 我想對此進行查詢,並將其放入我的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

唯一的問題是文檔沒有derby id,因此它將MongoDB對象id(_id)設置為derby id。 這是model.get()返回的JSON的示例: https : model.get()

我無法知道查詢之前的對象標識是什么。 我希望最近返回的id( currID )是否在對象的頂層,因此我可以對其進行查詢並設置模型引用。 我現在建立了一個hack來解決它,但是它並沒有我希望的那么順利。 代碼如下:

getId = (obj, year) ->
  for x of obj
    return obj[x].id if obj[x].year is year
  -1

另外,有沒有辦法在不破壞屏幕上已有模板的情況下更新模板? 而不是做一個完整的page.render而是做一個template.render

謝謝

Racer查詢剛剛在0.3.11中進行了更新,並在以下自述文件中進行了描述: https : //github.com/codeparty/racer/blob/master/lib/descriptor/query/README.md

注意:不再需要。 查詢系統已更新。 請參閱內特的答案。

我與DerbyJS(nateps)的開發人員進行了交談,他告訴我他們正在致力於改進查詢系統。 這項工作仍在進行中。

現在,我已經建立了一個hack,它將使用一個要測試的對象和一個參數對象

getId = (obj, params) ->
  ids = []
  for x of obj
    i = 0
    for y of params
      if obj[x][y] isnt params[y]
        break
      else if (++i is params.length)
        ids.push
          id: obj[x].id
  return ids

例如,您可以輸入如下對象:

var obj = {
  "lskjfalksj23423": {
    id: "lskjfalksj23423",
    name: "random day",
    year: 2012,
    month: 12,
    day: 1
  },
  "aklsdjflkasdfd": {
    id: "aklsdjflkasdfd",
    name: "random day 2",
    year: 2012,
    month: 8,
    day: 1
  }
}

然后是要測試的對象(請務必添加長度鍵)

var params = {
  month: 12,
  day: 1,
  length: 2
}

並將返回匹配ID的數組: [{id: "lskjfalksj23423"}]

注意:我尚未測試示例,所以如果您有問題,請告訴我。 無論如何,在進一步構建查詢系統后的幾個月內,這應該已經過時了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM