Я создаю приложение, которое позволяет пользователям публиковать посты, вы можете делать посты и просматривать все новые посты на главной странице. Я изо всех сил пытаюсь найти лучший способ эффективно структурировать данные базы данных и отслеживать все новые сообщения, которые сделаны, поскольку в настоящее время, если пользователь вошел в систему, он может публиковать что угодно без ограничений. Мне нужен эффективный способ скрининга сообщений для контента, загруженного в 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)
}
Мне трудно найти лучшую структуру для обработки данных такого типа и эффективный способ их проверки, чтобы обеспечить приемлемость контента (без оскорбительного содержания и т. Д.). Пожалуйста, укажите мне, как лучше всего обращаться с блогом. Ситуация с типом поста, подобная этой, и то, как я могу наилучшим образом отслеживать сообщения, заданные в базе данных, спасибо.