我正在尝试实施扇出,这是问题所在:当我尝试在我的SELECT DISTINCT SITE,
YEAR,
QUARTER,
SEATS,
SF,
HC
FROM
(SELECT DISTINCT site SITE,
YEAR YEAR,
quarter QUARTER,
sum(SEATS) SEATS,
sum(SF) SF
FROM Headcount
GROUP BY SITE,
YEAR,
QUARTER) A
CROSS JOIN
(SELECT DISTINCT sum(HC) HC
FROM Headcount
GROUP BY site,
YEAR,
quarter, HC) C
参考中updateChildValues
时,它什么也没做。我希望它创建usersOrdersRef
节点,并用我的user_orders
创建子节点,并在其中放置一个值。
如果我改用userid
,它可以正常工作,但是我需要添加值而不删除所有先前的数据。我在做什么错了?
代码:
setValues
答案 0 :(得分:0)
我自己解决它,现在它像这样
let usersOrdersRef = Database.database().reference().child("users-orders").child(self.appUser.uid).child(item.date!)
var primary = false
if (item.precursor == "") { primary = true }
usersOrdersRef.setValue(primary)
在这种情况下,setValue不会删除所有以前的数据,而只会添加新的
答案 1 :(得分:0)
您的问题:
//this does not work, but if i use "setValue" instead it will store data
usersOrdersRef.updateChildValues([item.date : primary])
我发现自己处于同样的情况。
问题是密钥的数据类型。当我将键转换为字符串时,它开始起作用。
希望这对处于相同情况的人有所帮助。
答案 2 :(得分:0)
您只需要将可选的数据键投射到updateChildValues
函数中即可。
更新的代码:
for item in orderArray {
let childRef = ref.child(item.date!)
//this works fine
childRef.updateChildValues(item.convertToDictionary() as! [AnyHashable : Any]) { [unowned self] (error, reference) in
if error != nil {
print(String(describing: error?.localizedDescription))
}
let usersOrdersRef = Database.database().reference().child("users-orders").child(self.appUser.uid)
var primary = false
if (item.precursor == "") { primary = true }
// this will work now, as we have explicity cast the key
usersOrdersRef.updateChildValues([item.date! : primary])
}
}
答案 3 :(得分:0)
我有同样的问题
如果我使用
let newHashTagRef = Api.HashTag.REF_HASHTAG.child(word.lowercased()) newHashTagRef。 updateChildValues ([[newPostId:true])
=>不起作用
当我更换
let newHashTagRef = Api.HashTag.REF_HASHTAG.child(word.lowercased()) newHashTagRef。 setValues ([[newPostId:true])
=>它可以工作,但是会删除所有以前的数据
解决方案
let newHashTagRef = Api.HashTag.REF_HASHTAG.child(word.lowercased())。孩子(newPostId) newHashTagRef。 setValue(true)