问题描述
我有一个 firebase 项目,其中包含 firebase 云函数,其中一个设置为更新身份验证和“用户”集合中的用户。我想创建一个名为 updateUser 的函数,它只更新请求中发送的属性。问题是,如果请求中未发送,我不知道如何告诉函数不要设置/更新此属性,例如: 注意:下面的代码在打字稿中
import sys
from random import random
from PyQt5.QtWidgets import QApplication,QWidget,QComboBox,QVBoxLayout,QPushButton,QLabel
class MyCombo(QComboBox):
def __init__(self,parent):
super().__init__(parent)
self.view().pressed.connect(self.handleItempressed)
def handleItempressed(self,index):
color = self.model().itemData(index)[0]
self.parent().setColor(color)
def removeDuplicates(self):
unique = list()
while len(unique) < self.model().rowCount():
if self.itemText(len(unique)) in unique:
self.removeItem(len(unique))
else:
unique.append(self.itemText(len(unique)))
class Gui(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.resize(300,200)
lay = QVBoxLayout()
self.cmb = MyCombo(self)
self.btn = QPushButton('Random',self)
self.btn.clicked.connect(self.btnClicked)
self.pnl = QLabel(self)
lay.addWidget(self.cmb)
lay.addWidget(self.btn)
lay.addWidget(self.pnl)
self.setLayout(lay)
def setColor(self,color):
self.cmb.insertItem(0,color)
self.cmb.setCurrentIndex(0)
self.cmb.removeDuplicates()
self.pnl.setStyleSheet('background-color: %s' % color)
def btnClicked(self):
colors = ['red','green','blue','yellow','orange']
self.setColor(colors[int(random() * len(colors))])
if __name__ == '__main__':
app = QApplication(sys.argv)
g = Gui()
g.show()
sys.exit(app.exec_())
仅当 data.password 存在时,如何告诉函数更新密码? admin.auth() 中不允许使用 Turnery/if 语句。 UpdateRequest 实例。
解决方法
updateUser
调用会更新您传入的所有属性。因此,如果您希望某个属性不被更新,请不要将其传递到调用中。
例如:
let updates = {};
if (data.password) updates.password = data.password;
if (data.photoURL) updates.photoURL = data.photoURL;
const res = await admin.auth().updateUser(uid,updates);