1

我遇到了 Derby 和 Mongo 的两个问题。我来自 MySQL 和 Redis 背景,所以也许我做错了什么?

1) 似乎我无法搜索类型为 ObjectId 的 Id。

model.query("users").byKey(params.userId);

只会匹配 _id 是字符串的记录。我猜这没问题,除非数据被“更新”,Racer 将创建一个带有 ObjectId _id 的新记录!所以基本上我永远无法通过我用 Racer 插入的 id 检索文档!

2)每次我进行查询时,我都会返回一个对象,例如:

{ '$spec': true, 
    '4fcd4c8e6c8c89d97ed90f4a': { "username": ... },
    '4fcd4c8e6c8c89d97ed90f4b': { "username": ... },

这意味着我必须将其转换为对象列表。我编写了一个函数,它创建一个_id 的列表,然后将它分配给一个模型变量以与 refList 一起使用。感觉就像一个黑客,这不是正确的方法。

4

2 回答 2

2

查询在 0.3.11 版本中进行了大幅更新。模型现在具有内置的 model.filter() 和 model.sort() 方法,它们将取代手动构建键列表并向 Derby 发出更有效的数组更新事件的需要。

请参阅查询自述文件

于 2012-06-28T00:57:34.380 回答
0

我不是 derbyjs 用户,但是这里有一些关于您的问题的建议:

1)关于“Id是ObjectId”?

似乎 id 必须是一个对象,请参阅DerbyDoc/Persistance

Racer 路径使用自然映射转换为数据库集合和文档:collection.documentId.document

...

// 根路径中的第一个和第二个段必须是对象

您如何保存数据?作为一般建议,完整的可重现代码将改善您可以获得的帮助。

2)“我需要将查询结果转换为列表”?

根据我对其他引擎的经验,您确实似乎没有使用正确的方法。一切都取决于您想对结果做什么,但一种非常常见的方法是使用对象列表并最终在模板循环中获取属性。在您的情况下,这意味着将查询结果直接传递给 page.render 调用。请参阅DerbyDoc/部分

希望这可以帮助

亚历克西斯

于 2012-06-05T09:29:26.190 回答