Как структурировать и отслеживать сообщения пользователей в приложении в стиле блога с помощью Firebase - PullRequest
0 голосов
/ 10 ноября 2018

Я создаю приложение, которое позволяет пользователям публиковать посты, вы можете делать посты и просматривать все новые посты на главной странице. Я изо всех сил пытаюсь найти лучший способ эффективно структурировать данные базы данных и отслеживать все новые сообщения, которые сделаны, поскольку в настоящее время, если пользователь вошел в систему, он может публиковать что угодно без ограничений. Мне нужен эффективный способ скрининга сообщений для контента, загруженного в Firebase, или даже решение, которое при создании нового сообщения отправляется на утверждение, а не сразу в базу данных. Как мне это сделать?

Вот способ, которым сообщения загружаются в базу данных, я использую дубликаты этой структуры также в authors и categories, что я не уверен, является ли это хорошим способом сделать это или нет, должен ли я находить способ иметь 1 экземпляр сообщения в базе данных, и вместо этого использовать какие-то идентификаторы, чтобы найти его в различных ситуациях, например по автору или по категории?

     "posts": {
           -childGeneratedKey: {
                      author: "author",
                      body: "body",
                      category: "category",
                      post_date: "1541784510.682485",
                      post_id: "childAddedID",
                      title: "post_title",
                      votes:"0",
                     }
             -childGeneratedKey: {...
             }

Вот как я управляю публикацией в приложении:

 func createPost(title: String, body: String) {

   let timeInterval = NSDate().timeIntervalSince1970
    let timeDouble = Double(timeInterval)

      ref = Database.database().reference()
        let posts = self.ref.child("posts")
        let post_id = posts.childByAutoId().key!
        let category = self.category
        let post_date = timeDouble

    if postTitle != "" {

        let newPost: Dictionary<String, Any> = [
            "title": title,
            "body": body,
            "votes": 0,
            "author": username,
            "post_id": post_id,
            "category": category,
            "post_date": post_date

        ]

        if privatePost == false {
        createNewPost(post: newPost, post_id: post_id, category: category)
        } else if privatePost == true {
            createnewPrivatePost(post: newPost, post_id: post_id, category: category)
        }

    }
}

func createNewPost(post: Dictionary<String, Any>, post_id: String, category: String) {

    let user_id = Auth.auth().currentUser?.uid
    let posts = self.ref.child("posts")
    let authors = self.ref.child("authors")
    let categories = self.ref.child("categories")
    let users = self.ref.child("users")

    posts.child(post_id).setValue(post)
    authors.child(user_id!).child("posts").child(post_id).setValue(post)
    categories.child(category).child("posts").child(post_id).setValue(post)
    users.child(user_id!).child("posts").child(post_id).setValue(post)


}

Мне трудно найти лучшую структуру для обработки данных такого типа и эффективный способ их проверки, чтобы обеспечить приемлемость контента (без оскорбительного содержания и т. Д.). Пожалуйста, укажите мне, как лучше всего обращаться с блогом. Ситуация с типом поста, подобная этой, и то, как я могу наилучшим образом отслеживать сообщения, заданные в базе данных, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...