我正在尝试在 Mongo Realm 的用户集合(用于聊天应用程序)中添加嵌入的“对话”对象。我想在创建用户帐户时创建一个“默认”对话,这样每个用户都应该是至少一个对话的成员,然后他们可以将其他用户添加到其中。
该应用程序当前使用电子邮件/密码身份验证过程通过后端 Realm 中的触发器和函数更新用户集合。
我的类在 Swift 中定义如下:
@objcMembers class User: Object, ObjectKeyIdentifiable {
dynamic var _id = UUID().uuidString
dynamic var partition = "" // "user=_id"
dynamic var userName = ""
dynamic var userPreferences: UserPreferences?
dynamic var lastSeenAt: Date?
var teams = List<Team>()
dynamic var presence = "Off-Line"
var isProfileSet: Bool { !(userPreferences?.isEmpty ?? true) }
var presenceState: Presence {
get { return Presence(rawValue: presence) ?? .hidden }
set { presence = newValue.asString }
}
override static func primaryKey() -> String? {
return "_id"
}
@objcMembers class Conversation: EmbeddedObject, ObjectKeyIdentifiable {
dynamic var id = UUID().uuidString
dynamic var displayName = ""
dynamic var unreadCount = 0
var members = List<Member>()
}
所以我目前的想法是我应该在 Swift 中对其进行如下编码,我认为这应该更新登录的用户,但遗憾的是不能完全正确:
// Open the default realm
let realm = try! Realm()
try! realm.write {
let conversation = Conversation()
conversation.displayName = "My Conversation"
conversation.unreadCount = 0
var user = app.currentUser
let userID = user.id
let thisUser = User(_id: userID)
realm.add(user)
}
谁能发现我的代码哪里出错了?
在谷歌上花了几个小时,我错过了一些非常明显的东西!我有相当多的 .NET 经验和 SQL,但正在努力转换到新世界!
当谈到 NoSQL 数据库和 SwiftUI 时,我是一个菜鸟,并试图找到我查看大量 Google 示例的方法。我的示例基于 Andrew Morgan 的教程https://developer.mongodb.com/how-to/building-a-mobile-chat-app-using-realm-new-way/