Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
766ae1d1ff | |||
7630882312 | |||
4aec47f207 | |||
c2e3a1ae6e | |||
3d8f8646b1 | |||
aca9817c56 |
34
README.md
34
README.md
@ -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
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "smartdata",
|
||||
"version": "2.0.3",
|
||||
"version": "2.0.6",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -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",
|
||||
|
Reference in New Issue
Block a user