2015-10-07 51 views
1

我使用Parse作爲我的後端,並使用Stripe作爲我的付款API。不幸的是,條紋沒有我需要的優惠券功能,所以我在Parse上自己實現。如何使用其中一個值對數組解析指針進行排序

我有一個Coupons對象,每個用戶擁有一個用戶已兌換的所有Coupon對象的數組。當他們通過我的應用程序請求服務時,我希望它從該陣列中彈出最高價值的優惠券。

我目前的解決方案效率非常低,而且不是動態的,對於三個價值券中的每一個都有獨立的數組,我檢查每個數組以查看它是否爲空,然後移動到下一個或彈出一個優惠券對象。

我想最大限度地減少這個請求的數量,使它擴展得更好一些。

我必須獲取Coupons對象,所以我的第一個想法是以某種方式在該提取中包含優惠券數組,類似於查詢的include()方法。不過,我並沒有看到這個功能。當我輸入這個時,我記得你可以使用query.find()來獲取一個特定的對象,所以我將嘗試去做,而不是設置objectId和調用fetch,並使用.include()方法。這是否對我的優惠券數組的每個對象使用額外的請求,還是使用一個查詢請求?我可以.include()一個屬性是一個指針數組嗎?如果我這樣做,我只需遍歷優惠券,找出哪一個具有最大的價值,並從陣列中刪除。

另一個想法是在添加優惠券的時候保持數組的排序,所以我總是能夠彈出第一個優惠券並只取出該優惠券,而不是遍歷所有優惠券。但是,這將要求我在添加優惠券時獲取數組中的所有優惠券,因此如果在查詢中包含數組不會使用額外的請求,那麼就請求使用而言,它實際上將是更高效的選項。

我的第三個想法是我正在研究涉及基於優惠券數組執行查詢並按值鍵以降序排序。但是,我不確定如何設置該查詢。它會是query.containedIn("objectId", couponArray),其中couponArray是指向Coupon對象的指針數組,而query是Coupon對象的查詢?然後我可以使用query.first()來獲取對象,我相信查詢只會使用一個請求。

如果你有一些建議,我會非常感激。我也對此類問題是否違反政策表示歉意,因爲我正在就如何開始實施某些事情徵求意見,而不是就如何解決我正在實施的問題提供建議。

感謝您的閱讀,

傑克

回答

0

我會遠離陣列離開完全在這種情況下。沒有必要使查詢或數據模型與數組複雜化。

每個對象都有一個單獨的Coupon對象,並且包含指向適用的指針的User指針。然後,您只需查詢指向用戶的所有優惠券,按降序排序,然後設置即可。如果有優惠券,它將是第一大優惠券。

這種方法的一個缺點是可能會創建大量的Coupon對象,但這非常不相關。解析是非常好的管理他們的數據庫和妥善分片/分割它以獲得良好的性能。要限制在給定時間活動的優惠券數量,您還可以爲每個優惠券添加到期日期,然後使用雲端後臺作業定期清理過期的優惠券。

作爲一般的經驗法則,關注於構建最佳用戶體驗要比過分關注可伸縮性要好得多。總的來說,可伸縮性問題很少發揮作用,因爲大多數應用程序失敗。不要說這是令人沮喪的;只是要記住,並防止你陷入過度工程的陷阱,以犧牲時間:)

+0

介意我DM嗎?我有幾件事我想問一下,我想給我一些關於我的實現的信息,以確保我能夠正確設置它,並且在沒有低字符限制的情況下會更容易。我會更新我的問題和你的答案以及任何相關的後代信息。 –

+0

當然,很樂意提供幫助 – Russell

相關問題