【更新】我正在编写以下python代码。 作为预设,Cloud Firestore中只有2个用户
def on_snapshot(doc_snapshot, changes, read_time):
user_counter = 0
for doc in doc_snapshot:
print('user %s' %(user_counter))
user_counter +=1
while_counter=0
while True:
print('while %s ----------' %(while_counter))
while_counter+=1
time.sleep(1) #Sleep for X seconds
#doc_ref = db.collection(u'users').document(doc.id)
doc_ref = db.collection(u'users') # Watch the document
doc_watch = doc_ref.on_snapshot(on_snapshot)
终端显示如下输出:
while 0 ----------
while 1 ----------
user 0
user 1
while 2 ----------
user 0
user 1
while 3 ----------
user 0
user 1
while 4 ----------
user 0
user 1
while 5 ----------
user 0
user 1
user 0user 0
user 1
user 0
user 1
user 1
user 0
user 1
user 0
user 1
while 6 ----------
user 0
user 1
while 7 ----------
user 0
user 1
while 8 ----------
user 0
user 1
user 0
user 1
user 0
user 1
user 0
user 1
user 0
user 1
user 0
user 1
user 0
user 1
user 0
user 1
user 0
user 1
while 9 ----------
user 0
user 1
while 10 ----------
user 0
user 1
虽然我认为输出应该是这样的
while 0 ----------
user 0
user 1
while 1 ----------
user 0
user 1
while 2 ----------
user 0
user 1
while 3 ----------
user 0
user 1
while 4 ----------
user 0
user 1
while 5 ----------
user 0
user 1
while 6 ----------
user 0
user 1
while 7 ----------
user 0
user 1
while 8 ----------
user 0
user 1
while 9 ----------
user 0
user 1
while 10 ----------
user 0
user 1
我在这个问题上纠缠了一段时间。 如果有人能找到并告诉我一个解决方案,我将不胜感激。 多谢各位
【本期过往帖子】 我正在编写下面的python代码
def on_snapshot(doc_snapshot, changes, read_time):
user_counter = 0
for doc in doc_snapshot:
print('user_counter: %s' %(user_counter))
user_counter +=1
sub_docs = db.collection(u'users').document(doc.id).collection(u'history').where(u'flag', u'==', True).stream()
subdoc_counter = 0
for sub_doc in sub_docs:
print('subdoc_counter: %s' %(subdoc_counter))
subdoc_counter +=1
print('Generating...')
sub_doc_dict = sub_doc.to_dict()
usr_txt = sub_doc_dict['inputdata']
#doing something for updating usr_text, here.
db.collection(u'users').document(doc.id).collection(u'history').document(sub_doc.id).set({
u'outputdata': usr_txt,
u'flag': False
}, merge=True)
#break #This didn't work I expected.
doc_ref = db.collection(u'users')
while_counter=0
while True:
doc_watch = doc_ref.on_snapshot(on_snapshot)
print('while_counter: %s' %(while_counter))
while_counter+=1
time.sleep(1)
print()的输出如下:
#Actual output of print().
"""
while_counter: 0
user_counter: 0
while_counter: 1
user_counter: 0
user_counter: 1
user_counter: 1
while_counter: 2
user_counter: 0
user_counter: 1
.
.
.
while_counter: 12
user_counter: 1
user_counter: 1
user_counter: 1
user_counter: 1
user_counter: 1
user_counter: 1
user_counter: 0
subdoc_counter: 0
Generating...
subdoc_counter: 0
Generating...
user_counter: 1
subdoc_counter: 0
Generating...
subdoc_counter: 0
Generating...
user_counter: 1
subdoc_counter: 0
Generating...
subdoc_counter: 0while_counter: 13
Generating...
subdoc_counter: 0
Generating...
subdoc_counter: 0
Generating...
user_counter: 1
subdoc_counter: 0
Generating...
subdoc_counter: 0
Generating...
subdoc_counter: 0
Generating...subdoc_counter: 0
Generating...
user_counter: 0
user_counter: 1
while_counter: 14
user_counter: 0
user_counter: 1
while_counter: 15
user_counter: 0
user_counter: 1
"""
虽然我认为它应该显示如下
#Output of my thought.
"""
while_counter: 0
user_counter: 0
user_counter: 1
while_counter: 1
user_counter: 0
user_counter: 1
while_counter: 2
user_counter: 0
user_counter: 1
.
.
.
while_counter: 12
user_counter: 0
subdoc_counter: 0
Generating...
user_counter: 1
while_counter: 13
user_counter: 0
user_counter: 1
.
.
.
"""
我不知道为什么我的代码多次运行print('Generating…')。以及如何修改它。 这个云Firestore为每个用户都有一个子集合“历史记录”(现在只有两个用户)。 在“历史”中,有历史数据,如history1、history2。 在每个历史数据中,有三个值:flag、inputdata和outputdata。 当打开标志(=True)时,从inputdata只生成一次outputdata(当启动此python代码时,所有标志都为False)。 并且在用户的子集合中,只有一个(或零个)历史数据同时具有flag=True
你有没有找到让这段代码像“我的想法的输出”一样运行的解决方案? 先谢谢你
目前没有回答
相关问题 更多 >
编程相关推荐