OrientDB - 将记录复制到只读 class

OrientDB - Duplicate a record into a read-only class

当用户创建记录时,需要将此记录复制到只读class。

两个顶点 classes,一个对用户具有完全访问权限,第二个具有只读访问权限。每当在完全访问 class 中创建记录时,都需要在只读 class.

中创建重复记录

动态挂钩几乎可以工作,但该函数不会触发,因为用户缺少只读 class 的创建权限。如何创建重复记录?

//from console
CREATE CLASS allRights EXTENDS V, OTriggered;
CREATE CLASS readOnly EXTENDS V;
ALTER CLASS allRights CUSTOM onAfterCreate=createDuplicate

CREATE FUNCTION createDuplicate "db.command(\"CREATE VERTEX readOnly set someField = \\"\" + doc.field(\'someField\')+\"\\"\");" LANGUAGE Javascript

INSERT INTO ORole SET name = 'testUser', mode = 0;
UPDATE ORole PUT rules = "database.class.readOnly", 2 WHERE name = "testUser";
UPDATE ORole PUT rules = "database.class.allRights", 15 WHERE name = "testUser"
UPDATE ORole PUT rules = "database.class.*", 15 WHERE name = "testUser"


INSERT INTO OUser SET name = 'testUser', password = 'password', status = 'ACTIVE', roles = (SELECT FROM ORole WHERE name = 'testUser')

这个问题我有两个解决方案:

  1. 您可以允许用户读取和创建权限 记录,但不能更新和删除它们。这样钩子 会工作。
  2. 在JS函数中,您可以切换到具有创建记录权限的用户。这是 JS 中的代码:db.switchUser('superuser', 'superuser')