这是我的数据库架构:
Database name: user
_id 74acd65e6eeb6d55809a950036000f50
_rev 1-f5ca343d0688d7a01b549e5c29a4a911
Budget dsds
user_Id abc123
Name ssdsd
现在我想要的是使用GWT检索所有"user_Id":"ssdsd"
的记录。
与mysql类似:select * from user where user_Id=ssdsd
请通过以下代码指导我
public String view(String user_id) throws IllegalArgumentException {
// TODO Auto-generated method stub
Session s1=new Session("127.0.0.1",5984);
Database db=s1.getDatabase("users");
return "";
答案 0 :(得分:1)
不幸的是我不熟悉GWT,但我认为你的问题与CouchDB有关。
如果您计划为每个用户创建一个且只有一个文档,那么您应该直接使用user_Id作为_id。通过这种方式,您可以获得使用" primary" CouchDb的索引对您有利,同时强制执行唯一的用户ID。
在type
属性中存储文档类型是一种很好的做法和惯例。
该文件可能如下所示:
{
"_id": "user.abc123",
"type": "user",
"name": "ssdsd",
"budget": "dsds"
}
如果每个user_Id需要多个文档,则需要编写CouchDB视图。您可以阅读CouchDB Docs中的介绍。
这是CouchDB地图功能的一些简单的JavaScript代码:
function (doc) {
if (doc.user_Id) {
emit(doc.user_id, {budget: doc.budget});
}
}
然后,您可以通过使用key
"abc123"
调用该视图来查询此视图,例如在浏览器中调用此URL:
http://localhost:5984/users/_design/users/_view/users?key=[“ABC123"]
P.S。:如果您还需要身份验证,则可能值得考虑将用户存储在内置数据库_users
中。请记住,这个系统db有一些限制:非管理员无法读取其他用户'此数据库中的文档,在那里添加文档时必须满足一些特殊的模式要求。