2017-02-06 16 views
5

cách bộ nạp dữ liệu lưu trữ và theo đợt yêu cầu và lưu trữ trong khóa.Trình tải dữ liệu để lưu vào bộ nhớ đệm và Yêu cầu cơ sở dữ liệu theo lô

https://github.com/facebook/dataloader

Ở đây tôi yêu cầu dataloader gói và tạo một đối tượng, nhưng làm thế nào nó hoạt động aby Ý tưởng ........................ ........... cho databses truy vấn xin vui lòng, cung cấp một ví dụ cho bảng db tìm

var DataLoader = require('dataloader') 

    var userLoader = new DataLoader(keys => myBatchGetUsers(keys)); 

userLoader.load(1) 
    .then(user => userLoader.load(user.invitedByID)) 
    .then(invitedBy => console.log(`User 1 was invited by ${invitedBy}`)); 

// Elsewhere in your application 
userLoader.load(2) 
    .then(user => userLoader.load(user.lastInvitedID)) 
    .then(lastInvited => console.log(`User 2 last invited ${lastInvited}`)); 

Trả lời

1

Tiện ích DataLoader từ Facebook hoạt động bằng cách kết hợp các yêu cầu đầu vào với một hàm thực thi mà bạn phải cung cấp. Nó chỉ hoạt động với các yêu cầu sử dụng Identifiers.

Có ba giai đoạn:

  1. giai đoạn tập hợp: Mọi yêu cầu về đối tượng Loader bị trì hoãn cho đến khi process.nextTick
  2. giai đoạn Batch: Các Loader chỉ cần gọi myBatchGetUsers chức năng bạn đã cung cấp với sự kết hợp của tất cả các yêu cầu Phím.
  3. Pha tách: kết quả sau đó được 'tách' để các yêu cầu đầu vào nhận được phần mong muốn của phản hồi.

Đó là lý do tại sao trong ví dụ cung cấp của bạn, bạn nên chỉ có hai yêu cầu:

  • Một dành cho người dùng 1 và 2
  • Rồi một cho người dùng có liên quan (invitedByID)

Thực hiện ví dụ này với mongodb, bạn chỉ cần xác định hàm myBatchGetUsers để sử dụng phương thức find một cách thích hợp:

function myBatchGetUsers(keys) { 
    // usersCollection is a promisified mongodb collection 
    return usersCollection.find(
     { 
      _id: { $in: keys } 
     } 
    ) 
} 
Các vấn đề liên quan