diaspora v0.2.0
Diaspora
Multi-source ORM for NodeJS & the browser
Build status
Documentation & important notes
Welcome on the GitHub repository of Diaspora. Please visit the Manualwebsite, the Quick Code Review or the API Documentation
Important note: Diaspora is very young and under heavy development. You are totally free to use it or contribute, but be aware that some important features are incomplete or absent:
- Relations: Not implemented
- Query language: Supported up to Specification level 2.
- Multi sources: not tested
Diaspora extensions
Available adapters
Other modules
Diaspora-Server: a package to easily create APIs for Diaspora models
Compatibility
Diaspora requires:
- Node
>=
6.4.0 - Browsers:
- Edge
>=
12 - Firefox
>=
18 - Chrome
>=
49 - Safari & iOS Safari
>=
10 - Chrome for Android
>=
61 - Samsung Internet
>=
5
- Edge
More briefly, Diaspora runs on all browsers & JavaScript engines that supports Proxies.
Notable incompatible browsers are
- Internet Explorer (all versions)
- Opera Mini
- UC Browser for Android
API Overview
Need help getting started? We have a page on how to get started in 5 minutes.
Here is a short API overview. For a detailed API documentation, check the Diaspora API Documentation
Model methods
spawn(object props
) => Entity
Create an entity, defining its properties with provided props
. The returned
entity should be persisted later.
spawnMany([object[] props
]) => Set
See spawn
.
insert(object props
) => Promise(Entity)
Create an entity, defining its properties with provided props
, and persist it
immediately.
insertMany([object[] props
]) => Promise(Set)
See insertMany
.
find(object || Any query
, object options
, string source
) => Promise(Entity)
Retrieve an entity matching query
. If query
isn't an object, it is
considered as an ID.
findMany(object || Any query
, object options
, string source
) => Promise(Set)
See find
delete(object || Any query
, object options
, string source
) => Promise(Entity)
Delete an entity matching query
. If query
isn't an object, it is considered
as an ID. options
can contain allowEmptyQuery
.
deleteMany(object || Any query
, object options
, string source
) => Promise(Entity)
See delete
update(object || Any query
, object newAttrs
, object options
, string source
) => Promise(Entity)
Update a single entity matching query
with attributes in newAttrs
. If query
isn't an object, it is considered as an ID. options
can contain
allowEmptyQuery
.
updateMany(object || Any query
, object newAttrs
, object options
, string source
) => Promise(Set)
See update
Entity methods
destroy(string source
) => Promise(this)
Delete this entity from the specified source
. Source hash object is set to
undefined
persist(string source
) => Promise(this)
Save current entity to the specified source
.
fetch(string source
) => Promise(this)
Reload entity from specified source
.
Planned or unsure Diaspora behaviors/features
Manual change of properties
Unsure > Entity may change status to desync
?
P2P Adapter
Unsure > May be interesting... Check for possible problems about data modification, etc etc.
IndexedDB Adapter (browser)
Unsure > IndexedDB technology may be too immature. See MDN about IndexedDB. Note: Plan to show fallback implementations