12/08/2018, 16:20

Thiết kế API bằng LoopBack (NodeJS) ~ P2

Ở phần trước tôi đã hướng dẫn tạo API bằng LoopBack, trong phần này tôi sẽ hướng dẫn bạn connect api với data source Tạo data source lb datasource Generator sẽ hỏi bạn những thông tin như tên datasource, connector driver, connection string url hoặc config từng thành phần riêng biệt. ? ...

Ở phần trước tôi đã hướng dẫn tạo API bằng LoopBack, trong phần này tôi sẽ hướng dẫn bạn connect api với data source

Tạo data source

lb datasource

Generator sẽ hỏi bạn những thông tin như tên datasource, connector driver, connection string url hoặc config từng thành phần riêng biệt.

? Enter the datasource name: postgresDs
? Select the connector for postgresDs: PostgreSQL (supported by StrongLoop)
? Connection String url to override other settings (eg: postgres://username:password@localhost/database):
? host: localhost
? port: 5432
? user: postgres
? password: framgia-node
? database: postgres
? Install loopback-connector-postgresql@^2.4 Yes
+ loopback-connector-postgresql@2.8.0
added 20 packages in 7.422s

Sau khi config xong LB generator sẽ tự động cài node module tương úng cho datasource, ở đây tôi chọn postgres.

Connect Book model với PostgreSQL

Bạn vừa tạo xong Postgres data source và Book model, việc cần làm bây giờ là kết nôi chúng lại. LB sử dụng file model-config.js để link model với datasource:

/server/model-config.json

  "Book": {
    "dataSource": "db",
    "public": true
  }

Để làm việc này bạn chỉ cần update file model-config.js sang postgresDs thành như sau:

/server/model-config.json

  "Book": {
    "dataSource": "postgresDs",
    "public": true
  }

Kiểm tra connection bằng API

Bây giờ bạn đã có Book model trong LB, làm cách nào để tạo chính xác bảng trong Postgres database? Bạn có thể thực hiện trực tiếp bằng vài câu truy vấn SQL ...nhưng LoopBack cũng cấp Node API tự động làm việc đó cho bạn, cơ chế đó gọi là auto-migration. Bây giờ bạn cần tạo một file boot script và viết aoto-migration vào đây, LoopBack sẽ tự động chạy các file này khi start ứng dụng.

? Enter the script name (without `.js`): create-sample-models
? What type of boot script do you want to generate? sync
   create server/boot/create-sample-models.js

/server/boot/create-sample-models.js

'use strict';

module.exports = function(app) {
  app.dataSources.postgresDs.automigrate('Book', function(err) {
    if (err) throw err;

    app.models.Book.create([{
      title: 'Node',
      author: 'Ryan Dahl',
    }, {
      title: 'Swift',
      author: 'Apple',
    }], function(err, book) {
      if (err) throw err;

      console.log('Models created: 
', book);
    });
  });
};

Start ứng dụng

node .

Ở màn console, bạn sẽ thấy nhưng thông tin sau:

Web server listening at: http://localhost:3000
Browse your REST API at http://localhost:3000/explorer
Models created:
 [ { title: 'Node', author: 'Ryan Dahl', id: 1 },
  { title: 'Swift', author: 'Apple', id: 2 } ]

Tại đây bạn có thể sử dụng API Explorer để test model bằng các method post, get, put, delete.

Qua ví dụ trên, bạn có thể tự tạo một ứng dụng đơn giản kết nối tới database. Hiện tại loopback chỉ support những database sau: MongoDB, Microsoft SQL Server, MySQL, Oracle, PostgreSQL.

0