此功能是否会将结果重复为错误或导致此问题?输出始终有1个或多个重复的记录。在这个例子中,中国银行总是在输出中列出两次。
gun.get('savings_accounts').map(function (name, ID) {
console.log( name.name, ID );
}, true)
我的代码:
localStorage.clear();
var gun = Gun();
////////////////////////////////////////////////////// create record
var acc1 = gun.put({
name: "Bank of America",
accType: "Savings",
last4: "4123",
favorite: true,
status: true,
created: "some date created"
});
var acc2 = gun.put({
name: "Bank of China",
accType: "Savings",
last4: "5123",
favorite: true,
status: true,
created: "some date created"
});
gun.get('savings_accounts').map(function (name, ID) {
console.log( name.name, ID );
}, true)
答案 0 :(得分:5)
来自GunDB的作者Mark Nadal
1)gun.get('savings_accounts').map().val(cb)
是你想要的正常/程序/简单事物。
无论其...
2)枪实际上是功能/反应(FRP),或者也称为流/事件导向。数据可能/将被多次调用(如果你不使用.val
)因为A)内存中的回复,B)浏览器的localStorage回复,C)服务器将回复,D)服务器将转发到其他浏览器对等体,每个可以回复数据。
^这是枪的“实时”部分。
.val
只会触发一次(因为链上的每个项目都很好,所以如果你map().val(cb)
,val
将被多次触发,但只会从列表中的每个项目触发一次。
.val(cb)
。
使用.on(cb)
(这是.map(cb)
内部使用的内容。如果您想订阅数据的实时更新,则大多数API方法在内部使用.on
) 。
你会慢慢发现实时/ FRP /事件/流媒体是一种更清晰的编写应用程序的方式。