17

Thực tiễn tốt nhất để tổ chức tất cả các chức năng đám mây của chúng tôi cho Firebase là gì?Tổ chức các chức năng đám mây cho Firebase

Tôi thấy từ sample GitHub repository rằng tất cả các chức năng nằm trong một tệp index.js.

Tôi đoán dự án lớn hơn có cách tiếp cận tốt hơn để tổ chức các chức năng đám mây cho Firebase trong các tệp/thư mục khác nhau.

+3

Đây là vấn đề về ý kiến ​​và không phù hợp với Stack Overflow. Tuy nhiên, bạn nên biết rằng bạn có thể sử dụng hàm require() để lấy mã từ các tệp khác vào tệp index.js của bạn. Sau đó, tổ chức là bất cứ điều gì bạn muốn. –

+0

Cảm ơn bạn @DougStevenson, câu trả lời này cho câu hỏi của tôi. –

+1

Xem ví dụ của tôi tại đây: http://stackoverflow.com/questions/42726310/how-to-test-firebase-functions-locally-on-pc/42729988#42729988 Đó là từ phiên bản phần nào đã lỗi thời của Chức năng đám mây, nhưng các khái niệm vẫn làm việc tương tự. –

Trả lời

4

tôi tổ chức xử lý sự kiện của tôi bằng cách cung cấp dịch vụ và tài nguyên trong một thư mục có tên triggers. Ví dụ. trong đó auth là nhà cung cấp và user là tài nguyên; thư mục functions/triggers/auth/user chứa một số onCreate.jsonDelete.js, chào đón và làm sạch người dùng tương ứng.

+--/auth 
| +--/user 
|  +--/onCreate.js 
|  +--/onDelete.js 
+--/database 
+--/storage 

Bạn có thể xuất một kích hoạt cụ thể bằng cách sử dụng các chức năng require:

exports.onCreateAuthUser = require('./triggers/auth/user/onCreate');  
exports.onDeleteAuthUser = require('./triggers/auth/user/onDelete'); 

tôi đã đi một bước xa hơn và tạo ra một kịch bản tự động xuất khẩu các chức năng đối với tôi. Tôi thay đổi phần mở rộng của các tệp thành f.js và tìm kiếm đệ quy thư mục trình kích hoạt. Đối với mỗi tệp được tìm thấy, tên hàm được pha trộn bằng cách chia nhỏ đường dẫn thư mục và tệp.

Cấu trúc này được lấy cảm hứng từ việc kiểm tra nội bộ của gói firebase-functions npm.

0

Bạn có thể sử dụng một cái gì đó như export { functionName } from './file' tại tệp index.js của mình.

/functions/index.js
// This is the main entry point for the app written in ES that is compatible with node lts 
import * as functions from 'firebase-functions'; 

export { sendWelcomeEmail } from './userEmails'; 

exports.helloWorld = functions.https.onRequest((request, response) => { 
    let helloMsg = `Hello!`; 
    response.send(helloMsg); 
}); 
Các vấn đề liên quan