Compare commits

..

6 Commits

Author SHA1 Message Date
766ae1d1ff 2.0.6 2018-01-14 18:07:35 +01:00
7630882312 docs(README): update 2018-01-14 18:07:29 +01:00
4aec47f207 2.0.5 2018-01-14 18:04:00 +01:00
c2e3a1ae6e docs(README): update 2018-01-14 18:03:57 +01:00
3d8f8646b1 2.0.4 2018-01-14 17:58:35 +01:00
aca9817c56 docs(README): update 2018-01-14 17:57:57 +01:00
3 changed files with 25 additions and 13 deletions

View File

@ -47,13 +47,20 @@ How RethinkDB's terms map to the ones of smartdata:
represents a Database. Naturally it has .connect() etc. methods on it.
```javascript
```typescript
import * as smartdata from "smartdata";
let myRethinkDb1 = new smartdata.Db({
// rethinkDb connection options here
db: "test",
host: "https://some",
user: "testuser",
password: "testpass",
port: 1234
});
// in case you need to support a proprietory ssl cert (e.g. compose.com):
myRethinkDb1.setSsl(process.env.RDB_CERT, "base64");
myDb1.connect();
```
@ -64,19 +71,18 @@ A collection is defined by the object class (that is extending smartdata.dbdoc)
So to get to get access to a specific collection you document
```javascript
```typescript
// continues from the block before...
@Collection(myRethinkDb1)
@smartdata.Table(myRethinkDb1)
class MyObject extends smartdata.DbDoc<myObject> {
// read the next block about DbDoc
@smartdata.svDb() property1: string; // @smartdata.svDb() marks the property for db save
property2: number; // this one is not marked, so it won't be save upon calling this.save()
constructor(optionsArg: { property1: string, property2: number }) {
constructor(optionsArg: { property1: string; property2: number }) {
super();
}
}
let myCollection = myRethinkDb1.getCollectionByName < myObject > myObject;
// start to instantiate instances of classes from scratch or database
@ -85,16 +91,20 @@ let localObject = new MyObject({
property2: 2
});
localObject.save(); // saves the object to the database
```
> Alert: You NEVER instantiate a collection.
> This is done for you!!!
// start retrieving instances
MyObject.getInstance<MyObject>({
property: "hi"
}); // outputs a new instance of MyObject with the values from db assigned
```
### class DbDoc
represents a individual document in a collection
and thereby is ideally suited to extend the class you want to actually store.
**sStore** instances of classes to Db:
DbDoc extends your class with the following methods:
* `.save()` will save (or update) the object you call it on only. Any referenced non-savable objects will not get stored.
@ -103,8 +113,10 @@ DbDoc extends your class with the following methods:
that extends DbDoc as well and call .saveDeep() on them as well.
Loops are prevented
So now we can **store** instances of classes to Db...
How do we **get** a new class instance from a Doc in the DB?
**Get** a new class instance from a Doc in the DB:
DbDoc exposes a static method that allows you specify a filter to retrieve a cloned class of the one you used to that doc at some point later in time. Yes, let that sink in a minute :)
So you can just call `.getInstance({ /* filter props here */ })`.
## TypeScript

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "smartdata",
"version": "2.0.3",
"version": "2.0.6",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "smartdata",
"version": "2.0.3",
"version": "2.0.6",
"description": "do more with data",
"main": "dist/index.js",
"typings": "dist/index.d.ts",