我目前正在启动并运行一项功能,在添加到表格视图时会将新的GoalItem
插入我的Firebase数据库..这太棒了!
func save(_ goalItems: [GoalItem]) {
let ref = Database.database().reference()
let goalRef = ref.child("goals").childByAutoId()
for goalItem in goalItems {
let attributes = ["iconName": goalItem.iconName, "text": goalItem.text, "user": self.email]
goalRef.setValue(attributes)
}
}
但是,当用户正在编辑他们的' GoalItem'时,也会调用save
,导致该项目被复制。
基本上,当text
的{{1}}属性最初等于数据库'文本&时,我正在寻找避免重复条目的方法#39;参考,这是'目标的孩子。参考。
我猜是这样的:
GoalItem
访问数据库'文本'抓住并将值与if goalItem.text == (value of Firebase's text reference) {
(update the text reference)
else {
goalRef.setValue
进行比较的参考是我此刻正在下降的地方。数据库的结构非常简单 - 如下图所示。
数据库
TLDR;需要访问特定的数据库子引用和更新(而不是覆盖)
提前谢谢!
答案 0 :(得分:2)
请注意保存功能中的这一行:
Aborting installation.
Unexpected error. Please report it as a bug:
{ Error: Cannot find module 'C:\Users\leonel\Desktop\pseudogram\node_modules\react-scripts\package.json'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at checkNodeVersion (C:\Users\leonel\AppData\Roaming\npm\node_modules\create-react-app\createReactApp.js:476:23)
at getPackageName.then.then.then.packageName (C:\Users\leonel\AppData\Roaming\npm\node_modules\create-react-app\createReactApp.js:283:7)
at process._tickCallback (internal/process/next_tick.js:109:7) code: 'MODULE_NOT_FOUND' }
let goalRef = ref.child("goals").childByAutoId()
是生成托管目标对象的长串随机字符的原因。由于您在更新时调用它,因此它也会创建新的目标对象。
因此,您需要做的是为每个现有目标保留此自动ID。而且,如果您正在编辑特定目标对象,则此参考应为:
childByAutoId()