我遇到了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一起使用。感觉就像这样的黑客,这不是正确的方法。
答案 0 :(得分:2)
版本在0.3.11版本中进行了大量更新。模型现在具有内置的model.filter()和model.sort()方法,这些方法将取代手动构建密钥列表并向Derby发出更高效的阵列更新事件的需要。
请参阅Queries README。
答案 1 :(得分:0)
我不是derbyjs用户,但是这里有一些关于你的问题的建议:
1)关于“Id is ObjectId”?
似乎id必须是一个对象,请参阅DerbyDoc/Persistance:
使用自然映射将Racer路径转换为数据库集合和文档: collection.documentId.document
...
//根路径中的第一个和第二个段必须是对象
您如何保存数据?作为一般建议,完整的可重现代码将改善您可以获得的帮助。
2)“我需要将查询结果转换为列表”?
根据我对其他引擎的经验,看来你确实没有使用正确的方法。所有这些都取决于你想对结果做什么,但一种非常常见的方法是使用对象列表,最后在模板循环中获取属性。在您的情况下,它将意味着直接将查询结果传递给page.render调用。见DerbyDoc/sections
希望这有帮助
亚历