Welcome

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