【问题标题】:Realm, Accessing the Object property after deleting that Object领域,删除该对象后访问该对象属性
【发布时间】:2022-01-21 12:12:33
【问题描述】:

我正在删除一个 Realm db 对象,但我想在删除后访问它的值,以便在其他处理中使用它。 这就是我的代码的样子:

const theObject = realm.objects('Products').filtered("_id == $0", "61bba17fc7e82eaae53527de")

//the fetched theObject(response) looks like this: 
[{_id:'61bba17fc7e82eaae53527de', name: 'Sugar'}]

var productName = theObject[0].name

realm.write(() => {

 realm.delete(theObject)

})

return productName //I want to use this productName here to do some other stuffs

我想使用/返回 productName 来做其他事情,但是当我尝试访问它时,我发现它 undefinednull

我认为这是因为 theObject 已被删除,因此无法访问 productId,但我想知道为什么会这样,因为我在删除之前分配它时已经捕获了该 id。即productName = theObject[0].name

现在,我的问题是,我怎样才能获取/访问/返回该产品名称?

【问题讨论】:

  • 在 JS 中不能删除对象,只有 Garbage Collector 可以做到。您只删除了对 realm 中的对象(属性)的引用。
  • @Teemu 现在删除对对象的引用后,我如何访问该 productName?我的问题应该怎么解决?
  • 如果您运行代码,productName 仍然包含分配给它的内容。
  • @Teemu 已解决。 productName 返回一个对象的数组,即 [{}],所以我通过访问该对象并找到值来解决它

标签: javascript arrays realm mongodb-realm


【解决方案1】:

这应该是不可能的。注释掉删除,并在控制台记录 productName 以确保事情的行为与您想象的一样。

另外,您似乎缺少 productName 的 var/let/const

const productName = theObject[0].name

编辑:

由于这些是异步操作,real.objects('Prodcuts') 可能会输给realm.delete()。您可以通过在尝试删除之前等待您的访问请求来解决此问题。

【讨论】:

  • 我不应该注释掉删除,因为我想删除那个文档。这里的问题是,我获取对象并获取其用于其他用途的值(返回的产品名称),然后删除对象。我该怎么做?
  • 您当然希望删除该文档。但出于测试目的,您应该将其注释掉,以确保您能够首先获取产品。
  • 我解决了,productName 返回一个对象的数组,即 [{}],所以我通过访问该对象并找到值来解决它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多