【问题标题】:Using imported docs from MongoDB in DerbyJS在 DerbyJS 中使用从 MongoDB 导入的文档
【发布时间】:2012-12-28 05:53:02
【问题描述】:

我有一个 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 objectid (_id) 设置为derby id。这是model.get() 返回的 JSON 示例:https://gist.github.com/0a5426d2b28a940e8803

我无法知道查询之前的 objectid 是什么。如果最近返回的 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

谢谢

【问题讨论】:

    标签: javascript node.js mongodb derbyjs


    【解决方案1】:

    Racer 查询刚刚在 0.3.11 中更新,并在此自述文件中进行了描述:https://github.com/codeparty/racer/blob/master/lib/descriptor/query/README.md

    【讨论】:

      【解决方案2】:

      注意:这不再需要。查询系统已更新。请参阅 Nate 的回答。

      我与 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"}]

      注意:我没有测试过这个例子,所以如果你遇到问题,请告诉我。无论如何,当进一步构建查询系统时,这应该在几个月内过时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-11
        相关资源
        最近更新 更多