microblog
誰もがすべての投稿を読むことができるが、所有者だけが投稿を削除または編集できる場所を作成したい。海なしではgundb
、誰もが投稿を編集または削除できますsea( gun.user())
。公開鍵を共有する必要があります。海では、すべてのユーザーの投稿を取得してタイムラインに投稿を表示する方法を教えてください。
これをgundbで作成するにはどうすればよいですか?
でのデータ プライバシーに関する質問への回答を探していました。これがgun
私の回答です。
<script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gun/sea.js"></script>
var gun = Gun()
gun.user().create('firstMicroblogAuthor', 'somePassword')
gun.user().auth('firstMicroblogAuthor', 'somePassword')
var post = {
title: 'First post',
text: 'Hello world!'
}
var author = gun.get('~@firstMicroblogAuthor') // There should be the same `username` in Step 2
gun
.user()
.get('posts')
.set(post) // At this step, we saved the post in a user schedule, which by default is only writable by the user
.once(function() {
this.get('author').put(author) // In this step, we link our post with the author (with our user)
gun.get('posts').set(this) // At this step, we save the post with the author installed in the main graph
})
gun.user().leave()
gun.user().create('secondMicroblogAuthor', 'somePassword')
gun.user().auth('secondMicroblogAuthor', 'somePassword')
gun
.get('posts') // Read posts from public graph
.once(function() {
this.get('text').put('Goodbye world!') // In this case, we will get an error, because this post was protected
})
ユーザーが作成されるたびに、公開鍵を他のすべてのユーザーと共有できます。(リストを管理するスーパー ユーザーを配置します) 次に、フロントエンド Web サイトはすべての公開キーを反復処理して、人々が作成したすべての投稿を取得し、それらを表示します。そうすれば、人々はすべての投稿を読むことができますが、編集することはできません. これを行うもう 1 つの方法は、スーパー ユーザーに、投稿を自分のグラフに常にインデックス付けして「コピー」するプロセスを実行させることです。そのグラフを表示することができます。(さらに保護されます)これは非常に高レベルの回答ですが、これはすべて gun.user() と銃のコア構造を使用して可能です。
todo-dapp がパブリック読み取りユーザー専用書き込みであると言うのは誤解を招きます。実際には、他のユーザーのドキュメントを表示する機能は提供されません。
実際、これを行う方法に関するドキュメントや例が実際にはなく、開発者に尋ねると、回避に次ぐ回避に直面するだけであることに、私は長年悩まされてきました。
データベースは、ユーザーの懸念を互いに分離する方法がある場合にのみ役立ちます