notrab
04/23/2017, 5:57 PMreturn new Promise((resolve, reject) => {
_this.aggregate([
{$match: {url}},
{$group: {
_id: "$emoji",
count: {$sum: 1},
ips: {$push: "$ip"}
}},
{$project: {
_id: 0,
emoji: "$_id",
count: 1,
reacted: {
$setIsSubset: [[ip], "$ips" ]
}
}}
], (err, result) => {
if (err) return reject(err)
resolve(result)
})
nilan
04/23/2017, 5:58 PMnotrab
04/23/2017, 6:05 PMnotrab
04/23/2017, 6:07 PMnotrab
04/23/2017, 6:07 PMnotrab
04/23/2017, 6:07 PMnilan
04/23/2017, 6:08 PMcount
with filters and do % or other calculations client sidenilan
04/23/2017, 6:08 PMnilan
04/23/2017, 6:08 PMnotrab
04/23/2017, 6:14 PMnotrab
04/23/2017, 6:15 PMnilan
04/23/2017, 6:16 PMnotrab
04/23/2017, 6:16 PMnilan
04/23/2017, 6:16 PMnotrab
04/23/2017, 6:16 PMnotrab
04/23/2017, 6:17 PMnilan
04/23/2017, 6:17 PMnotrab
04/23/2017, 6:17 PMnilan
04/23/2017, 6:17 PMnilan
04/23/2017, 6:17 PMnotrab
04/23/2017, 6:17 PMnotrab
04/23/2017, 6:17 PMnotrab
04/23/2017, 6:18 PM[
{
emoji: "sad",
count: 2,
reacted: false
},
{
emoji: "happy",
count: 2,
reacted: false
},
{
emoji: "sad",
count: 0,
reacted: false
},
{
emoji: "love",
count: 0,
reacted: false
},
{
emoji: "poop",
count: 0,
reacted: false
}
]
nilan
04/23/2017, 6:18 PMReaction
type?notrab
04/23/2017, 6:18 PMreacted
is calculated by the current IP vs a stored IP with that same emoji.nilan
04/23/2017, 6:19 PMnilan
04/23/2017, 6:19 PMnilan
04/23/2017, 6:20 PMquery {
sadCount: _allReactionsMeta(filter: {
emoji: "sad"
}) {
count
}
poopCount: _allReactionsMeta(filter: {
emoji: "poop"
}) {
count
}
}
nilan
04/23/2017, 6:20 PMnotrab
04/23/2017, 6:21 PMnilan
04/23/2017, 6:21 PMnotrab
04/23/2017, 6:22 PMnilan
04/23/2017, 6:22 PMnotrab
04/23/2017, 6:22 PMhappyCount
to happy
nilan
04/23/2017, 6:22 PMnotrab
04/23/2017, 6:23 PMnotrab
04/23/2017, 6:24 PMtype Reaction {
createdAt: DateTime!
emoji: String!
id: ID!
ip: String
updatedAt: DateTime!
url: String!
}
nilan
04/23/2017, 6:24 PMnotrab
04/23/2017, 6:24 PMnilan
04/23/2017, 6:24 PMallReactions
and see if the response is emptynilan
04/23/2017, 6:24 PMnotrab
04/23/2017, 6:25 PMReaction
would have validation on the emoji field scoped by IP. So there can be multiple ‘happy’ Reactions, but only by one IP.notrab
04/23/2017, 6:26 PMnotrab
04/23/2017, 6:27 PMnilan
04/23/2017, 6:27 PMnilan
04/23/2017, 6:27 PMnilan
04/23/2017, 6:28 PM${ip}_${emoji}
that's uniquenotrab
04/23/2017, 6:29 PMnilan
04/23/2017, 6:29 PMnilan
04/23/2017, 6:30 PMnilan
04/23/2017, 6:30 PMnotrab
04/23/2017, 6:32 PMnotrab
04/23/2017, 6:32 PMnilan
04/23/2017, 6:32 PMnilan
04/23/2017, 6:33 PMnotrab
04/23/2017, 6:33 PMnotrab
04/23/2017, 6:35 PMnilan
04/23/2017, 6:35 PMstage
labels that give you an idea of the current stage 🙂nilan
04/23/2017, 6:35 PMnotrab
04/23/2017, 9:15 PMnilan
04/24/2017, 8:10 AM