4

我已经开始使用 GunDB,我真的很喜欢它。我可以轻松创建复杂的关系,而不会出现与关系或文档数据库相关的许多问题。

不幸的是,我遇到了一个看似简单的问题。

我已经成功创建了节点,但后来想获取密钥,以便将它们嵌入到页面中。例如,在一个页面上,我正在使用表单添加用户。然后,在另一个页面上,我想获取用户列表并创建一个选择输入,将他们的姓名列为文本,将键列为值。

例如,在第一页我有类似 -

var user1 = gun.get('user/1').put({name: user1});
var user1 = gun.get('user/2').put({name: user2});
var users = gun.get('users');
users.set(user1);
users.set(user2);

另一页,我有类似的东西 -

var users = gun.get('users');

users.map().val(function(user) {
  var userOption = document.createElement("option");
  userOption.text = user.name;
  userOption.value = user.key; // for example, though this does not work
  userSelect.appendChild(userOption);
  
});

后来,我想在类似的地方使用选项值 -

var user = gun.get(selectedUserOption.value);

不幸的是,我不知道如何获得钥匙。它似乎在节点对象中保存为“#”,但我无法确定如何访问该值。

4

1 回答 1

4

好问题!大多数回调的第二个参数包含您要获取的数据的字段或键。从你的例子:

users.map().val(function(user, ID) {
  var userOption = document.createElement("option");
  userOption.text = user.name;
  userOption.value = ID; // for example, this now should work
  userSelect.appendChild(userOption);
});

现在您可以users.path(selectedUserOption.value)获取相同的用户引用/链上下文!

我很高兴听到您喜欢使用枪 :) 我很想看到您的项目演示!心灵分享?

于 2017-01-15T20:08:58.067 回答