0

我有一個返回值基本上是串10行的終點,這個類在我的數據庫中表示在以不同的順序值:端點返回部署服務器

class BoardForm(messages.Message): 
    """Used to show a board state""" 
    row_0 = messages.StringField(1) 
    row_1 = messages.StringField(2) 
    row_2 = messages.StringField(3) 
    row_3 = messages.StringField(4) 
    row_4 = messages.StringField(5) 
    row_5 = messages.StringField(6) 
    row_6 = messages.StringField(7) 
    row_7 = messages.StringField(8) 
    row_8 = messages.StringField(9) 
    row_9 = messages.StringField(10) 

在我開發服務器,當我使用這個端點,它完全按照上面看到的順序返回所有10行。但是,在部署應用程序並在實時服務器上測試端點(不更改代碼)後,我的行順序不同。實時端點還返回"kind""etag"的數據,該數據不在開發服務器上,我提到它是唯一可以看到的其他差異。

我能創造一個變通,通過使用不同的類顯示正確的順序:

class StringMessages(messages.Message): 
    """Outbound (multiple) string message""" 
    items = messages.StringField(1, repeated=True) 

我只是把每一行到這個類,創建一個列表,並返回一個值,而不是(並且顯然也改變端點的response_message)。

但是,我真的想知道爲什麼訂單會在部署的服務器上突然發生變化。它似乎不是隨機的,因爲重複嘗試使用端點每次都會返回相同的順序(類似於4,5,0,1,2,3,6,7,8,9等)。我可以接受我的工作,但如果有更好的方法可以解決這個問題,我寧願不使用它。如果我能更好地理解GAE,那也是好的。

回答

0

看不到你如何顯示輸出。沒有對變量進行「排序」。如何返回一個列表,它確實有順序:

class BoardForm(messages.Message): 
    """Used to show a board state""" 
    row_list = [messages.StringField(i) for i in range(1,11)] 
+0

這基本上是我用'StringMessages'類做的。爲了顯示輸出,我只使用API​​瀏覽器來運行端點並查看其返回數據。所以,如果我正確理解了你,除非我使用內置訂單的東西,如列表,並且我在開發服務器和實時服務器上看到的訂單只是巧合,否則無法獲得有序輸出? – coralvanda

+1

要獲得訂單,您必須按正確的順序分別獨立調用變量。列表更有意義,因爲您可以按順序循環。而不是'row_3',你會有'row_list [3]' – GAEfan