mongoDB iOS Swift SDK изменить массив?

У меня есть объект моей модели данных:

class Tiktoks: Object {
    @objc dynamic var _id: ObjectId = ObjectId.generate()
    @objc dynamic var _partition: String = ""
    @objc dynamic var category: String = ""
    @objc dynamic var date: Date = Date()
    let tiktoks = RealmSwift.List<String>()
    override static func primaryKey() -> String? {
        return "_id"
    }
    
    convenience init(partition: String, category: String) {
        self.init()
        self._partition = partition;
        self.category = category;
    }
}

У меня нет проблем с изменением _partition и category, но поскольку tiktoks список определяется let, это не сработает, если я вставлю его в convenience initфункция, чтобы я мог ее изменить. Я пробовал поставить @objc dynamic var перед ним, но он говорит Property cannot be marked @objc because its type cannot be represented in Objective-C.

Есть ли способ изменить массив с помощью SDK mongoDB iOS Swift?

1 ответ

Решение

В итоге я создал функцию в MongoDB Realm.

exports = function(category, url){
  
  var collection = context.services.get("mongodb-atlas").db("database").collection("collection")
  
  collection.updateOne(
    { category: category },
    { 
      $push: { 
          tiktoks: {
          $each: [ url ], 
          $position: 0
        }
      },
      $set: {
        date: new Date()
      }
    },
    )
  
  return "done"; // not supposed to return string I think, has to return "non-double" result
};

и его можно запустить, используя:

user.functions.add_tiktok_to_category([AnyBSON(stringLiteral: tiktoks.category), AnyBSON(stringLiteral: $0!)])

Вот документация по запуску функции MongoDB в Swift: https://docs.mongodb.com/realm/ios/call-a-function/

Другие вопросы по тегам