Nodejsでmongodbを書いて操作してC〓風を書きます.

2324 ワード

ブロガーは初期にC((zhi)を書いていました.linqとlambada表現の書き方が大好きで、nodeを書いたら同じjavascript系のmongodbだと思っていましたが、nodeの下に書くとccaよりもっと快適になるはずです.最近はtyperxが語源となりましたので、この楽しい書き方を皆さんと共有してみてください.
初期化項目とモジュールの取り付け
npm init
npm install  mongoose bluebird --save 
npm install  @types/bluebird @types/mongoose @types/node --save-dev
連結文字列モジュールconnector.tsを作成します.
import * as mongoose from 'mongoose';
import bluebird from 'bluebird';

export function connect(uri: string) {
    (mongoose).Promise = bluebird;
    mongoose.connect(uri);
    const db = mongoose.connection;
    db.on('error', (err: any) => {
        throw new Error('unable to connect to database at ' + uri + err);
    });
}
schemaを作成
import { Schema, SchemaTypes as t, SchemaOptions, model } from 'mongoose';

export const ExampleSchema = new Schema({
    title: t.String,
    content: t.Mixed
},
    { timestamps: true });
timestampsパラメータを使用すると、自動的に2つの時間フィールドを維持できます.
インターフェースを作成
export class Example {
    id: string;
    title: string;
    content: string;
}

databaseモジュールを作成
import { model, Document } from 'mongoose';
import { Example } from './interfaces/example.interface';
import { ExampleSchema } from './schemas/example.schema';

export const ModuleDatabase = {
    Example: model('Example', ExampleSchema),
};
ここがタイプペアリングのポイントです.
example.service.tsを作成します.
import { ModuleDatabase as Db } from './modules/module.database';

export class ExampleService {
    async findOneByTitle(title: string) {
        return Db.Example.findOne({ title: title }).exec();
    }
}
ここでDbをノックします.Db.Exampleなどはそれぞれのタイプのインターフェースを呼び出すことができます.とても便利です.
呼び出し例のtest.tsを作成します.
import { connect } from './connector';
import { ExampleService } from './example.service';
connect('mongodb://localhost/example');

const service = new ExampleService();
service.findOneByTitle('hello').then(res => console.log('title', res.title));

ここでresを叩きます.titleを呼び出すことができます.
サンプルコードhttps://github.com/vellengs/typerx-blogs
もっと多くの使用方法をtyperxに参照してください.