1

我在 OPA 工作了几天,我真的开始喜欢它了。我正在参加计算机科学的第一年,第二年我们开设了一些数据库课程-我对数据库的了解很少来自 php,我将 MySQL 与 php 和 SQLlite 与 c++ 一起使用。但是这种类型的数据库与我所看到的有点不同。

我已按照 OPA http://doc.opalang.org/manual/Hello--database中有关数据库的指南进行操作,但我有一个问题:

在指南中,我们声明了一个新数据库:

type user_status = {regular} or {premium} or {admin}
type user_id = int
type user = { user_id id, string name, int age, user_status status }
database users {
   user /all[{id}]
   /all[_]/status = { regular }
}

我们学习了如何读取这个数据库并使用 Maps 对这个数据库进行一些查询,但是如何添加一个新元素呢?我测试了一下:

/users/all[{id:0}]/name<-getusername;

但据我所知,id 应该是自动递增的。

谢谢大家的帮助=D我真的很想进入OPA,我所做的那一点真的令人印象深刻!

4

2 回答 2

1

mongoDB 和自动增量

出于可扩展性的原因,使用 mongoDB(默认的 Opa 数据库)没有自动增量(就像在 SQL 中一样)。但是如果你真的需要一个,你可以使用一个计数器来自己创建这个功能:

database users {
   user /all[{id}]
   int  /fresh_key
   /all[_]/status = { regular }
}

并在每次使用时递增密钥:/users/fresh_key++

随机新鲜钥匙

您还可以生成随机 id,例如使用类似Random.string(6) 阅读此线程以了解有关此技术的更多信息:http: //lists.owasp.org/pipermail/opa/2012-April/001052.html

用户定义的唯一键

但是如果你在和用户打交道,也许你已经有了一个唯一键:使用“登录”或“电子邮件”作为唯一键怎么样?

于 2012-06-13T16:03:37.160 回答
0

您还可以使用Date.in_milliseconds(Date.now_gmt())更独特的 id,可能与用户 id 连接

于 2012-06-13T22:20:11.907 回答