0

'da nasıl gerçekleştirilir Uygulamamda bir kullanıcının arkadaşları vardır. Bir kullanıcı gönderen istekleri gönderebilir ve arkadaşları onaylayabilir (durum özelliğiyle işaretlenmiş) ve arkadaşları silebilir. Bir kullanıcının sadece X arkadaşının beklemede olan X sayısı olan arkadaş sayısı olabilir. Bunu saklamak için var olmayan bir tür var, o zaman Arkadaşlar denen bir Çocuk Varlığı var.Bu işlem, varlık grubu

Arkadaş

-Key((NonExistantKindParent,my_username), friends_username) 
-status 
-created_date 

anahtarının varolduğunu yapar bir atası oluşur ve kimliği kullanıcının kullanıcı adı şudur: Bu gibi. Çocuk varlıkları o kullanıcının tüm arkadaşları olacak. Bunun sonucu olarak, her arkadaşlık iki kez, bir kez arkadaş1 ve bir kez de bir kez arkadaş2 için saklanacaktır. Bunlar tutarlı bir şekilde tutarlı olabilmeleri için varlık gruplarındadır ve işlemleri gerçekleştirebilirim (örneğin, bir kullanıcı arkadaşlık ve talepte bulunan arkadaşa talep eden kullanıcıya yazması gereken bir arkadaş eklerse). Orada ihtiyacım çok daha operasyonlar vardır, ama o zaman ben gereken diğer operasyonlara bu bilgiyi uygulamak hangi aşağıdakileri nasıl anlamaya çalışıyorum:

  • tarihe göre kullanıcının arkadaşları düzenin tüm almak için oluşturuldular (sadece arkadaşın kullanıcı adı gerekli).

  • Kullanıcının onayladığı tüm arkadaşları (status = 'confirmed') almak için.

at docs Okuma: https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.30.3/datastore/query?method=select Ben eden taraf grupları sorgulamak için nasıl karıştı. Bu sorgulardan birkaçı için bir özellik filtresi ve görünen bir filtre kullanmam gerekiyor ama nasıl emin değilim? Bir varlık grubunu sorgulamak gerekirse, dokümanlar oldukça kullanışlıdır.

cevap

1

Özellik filtresi query#filter kullanılarak uygulanır ve bir atalık sorgusu query#hasAncestor ile ayarlanır.

+0

Mesela tüm kullanıcıların arkadaşlarını almak için atalara ihtiyacım yok. Bunu nasıl yapardım, bunlardan değil, filtreler bunu yapmaz mı? – user2924127

+0

'hasAncestor' bir ataların torunlarını geri getirecektir. "Bu atası olan kayıtları iade et" diyor. 'filter'," bu özelliğin bu değere eşit olduğu kayıtları döndür. " – Stephen

+0

Evet, biliyorum, ama bunları nasıl birlikte kullanabilirim? Örneğin şöyle bir şey yapıyorum: var query = datastore.createQuery ('Arkadaşlar'). HasAncestor (datastore.key (['FriendParent', 'my_username'])) filtre ('status', 'pending'); Bazı verileri döndürmeli, ancak boş diziyi döndürüyor []. – user2924127