Schema Definition
Rooms
{
"_id": "22nytdn4QqKvSk2Av", // Random.id()
"t": "p", // String Room Type: c = chanel, d = direct, p (change to g) = group, v = visitor
"ts": new Date(1432937851208), // Date Room Creation Timestamp
"name": "general", // String Room Name (t:d -> empty)
"lm": new Date(1432937851208), // Date Last Message Timestamp
"msgs": 2345, // Integer Messages Counter
"cl": true, // Boolean If users can leave room
"ro": false, // Boolean Read Only
"usernames": [ // Array(String) Room Users
"username1", // String User Username
"username2",
"username3"
],
"u": { // Object Owner User
"_id": "CABrXSHpDqbZXGkYR", // Random.id() User Id
"username": "john" // String User Username
},
"customFields": { // Object User defined custom fields (for t:c and t:p only)
"userDefinedField": "userValue", // User defined field example
"userDefinedField2": true, // User defined field example
"userObject3": { // User defined field example
"a": "hello",
"b": "lalala"
}
}
}
Fields
Fields |
Type |
Description |
_id |
Random.id() |
Room Id |
t |
String |
Room Type |
ts |
Date |
Room Creation Timestamp |
name |
String |
Room Name (t:d -> empty) |
lm |
Date |
Last Message Timestamp |
msgs |
Integer |
Messages Counter |
cl |
Boolean |
If users can leave room |
ro |
Boolean |
Read Only |
usernames |
Array[String] |
Room Users |
usernames.0 |
String |
User Username |
u |
Object |
Owner User |
u._id |
Random.id() |
User Id |
u.username |
String |
User Username |
customFields |
Object |
User custom fields (for t:c and t:p only) |
Indexes
Fields |
Options |
name |
unique, sparce |
u._id |
|
Subscriptions
{
"_id": "22nytdn4QqKvSk2Av", // Random.id()
"t": "p", // String Subscription Type (copy from Room)
"ts": new Date(1432937851208), // Date Subscription Creation Timestamp
"ls": new Date(1432937851208), // Date Last Seen Timestamp
"name": "my-cool-friends", // String Subscription Name (t:d -> target username)
"rid": "25fkmHMDeFp57ZqYg", // Random.id() Room Id
"f": true, // Boolean Favorited
"open": true, // Boolean Is Room Opened
"alert": true, // Boolean Room has unread messages for this user
"unread": 5, // Integer Counter of unread messages with mentions or from direct messages
"u": { // Object User
"_id": "CABrXSHpDqbZXGkYR", // Random.id() User Id
"username": "liam" // String User Username
},
"v": { // Object Visitor
"_id": "CABrXSHpDqbZXGkYR", // Random.id() Visitor Id
"username": "anonymous" // String Visitor Username
},
"customFields": { // Object User defined custom fields
"userDefinedField": "userValue", // User defined field example
"userDefinedField2": true, // User defined field example
"userObject3": { // User defined field example
"a": "hello",
"b": "lalala"
}
}
}
Fields
Fields |
Type |
Description |
_id |
Random.id() |
Subscriptions Id |
t |
String |
Subscription Type (copy from Room) |
ts |
Date |
Subscription Creation Timestamp |
ls |
Date |
Last Seen Timestamp |
name |
String |
Subscription Name (t:d -> target username) |
rid |
Random.id() |
Room Id |
f |
Boolean |
Favorited |
open |
Boolean |
Is Room Opened |
alert |
Boolean |
Room has unread messages for this user |
unread |
Integer |
Counter of unread messages with mentions or from direct messages |
u |
Object |
User |
u._id |
Random.id() |
User Id |
u.username |
String |
User Username |
v |
Object |
Visitor |
v._id |
Random.id() |
Visitor Id |
v.username |
String |
Visitor Username |
customFields |
Object |
User custom fields |
Notes about customFields:
- customFields inherits from room’s customFields for channels (Room Type: c = chanel) and groups (Room Type: p = group) and changes with room’s customFields
- customFields inherits from user’s customFields for Direct Messages (Room Type: d = direct) and changes with user’s customFields. Note that users of Direct Messages room will have own customFields.
Indexes
Fields |
Options |
rid, u._id |
unique |
u._id, name, t |
unique |
open |
|
alert |
|
unread |
|
Messages
{
"_id": "22nytdn4QqKvSk2Av", // Random.id()
"t": "p", // String Message Type
"ts": new Date(1432937851208), // Date Message Creation Timestamp
"rid": "25fkmHMDeFp57ZqYg", // Random.id() Room Id
"msg": "Yeah, doesn't seem to like it", // String Message Body
"url": [ // Array(String) Message URLs
"http://google.com/"
],
"expireAt": new Date(1432937951208), // Date Message auto-delete trigger
"mentions": [ // Array(String) Mentioned Usernames
"username1"
],
"u": { // Object User
"_id": "CABrXSHpDqbZXGkYR", // Random.id() User Id
"username": "john" // String User Username
},
"v": { // Object Visitor
"_id": "CABrXSHpDqbZXGkYR", // Random.id() Visitor Id
"username": "anonymous" // String Visitor Username
}
}
Indexes
Fields |
Options |
rid, ts |
|
expireAt |
expireAfterSeconds |
Visitors
{
"_id": "22nytdn4QqKvSk2Av", // Random.id()
"name": "John", // String Name
"email": "a@d.com", // String Email
"phone": "555 876333443", // String Phone
"token": "token" // String Token
}
Indexes