Có một số câu hỏi tương tự được hỏi nhưng câu hỏi của tôi là nếu tôi muốn phổ biến kết quả trung gian mà tôi nhận được cùng với phần mềm trung gian định tuyến khác nhau, cách tốt nhất để làm điều đó là gì?req.locals so với res.locals so với res.data so với req.data so với app.locals trong phần trung gian Express
app.use(f1); app.use(f2); app.use(f3);
function f1(req,res,next) {
//some database queries are executed and I get results, say x1
res.locals.dbResults = {...};
next();
}
function f2(req,res,next) {
// more processing based upon req.locals.dbResults
res.locals.moreResults = {....};
next();
}
// ...
Tôi nghĩ rằng tôi có thể nhận công tác tuyên truyền cùng một dữ liệu thông qua các trung gian khác nhau bằng cách sử dụng req .locals. Ngoài ra, có vẻ như các đối tượng yêu cầu và đáp ứng đều có các thuộc tính cục bộ được khởi tạo cho một đối tượng rỗng khi bắt đầu yêu cầu.
Ngoài ra, bạn cũng có thể đặt thuộc tính res.mydata hoặc req.mydata? Về lý thuyết, app.locals cũng có thể được sử dụng để truyền dữ liệu này cùng với các phần mềm trung gian khác vì nó sẽ tồn tại trên các phần tử trung gian nhưng điều đó sẽ trái ngược với việc sử dụng thông thường của app.locals. Nó được sử dụng nhiều hơn cho dữ liệu ứng dụng cụ thể. Cũng cần phải xóa dữ liệu đó ở cuối chu kỳ yêu cầu-đáp ứng để các biến tương tự có thể được sử dụng cho yêu cầu tiếp theo.
Cách tối ưu và tiêu chuẩn để truyền bá kết quả trung gian thông qua phần mềm trung gian là gì?
Cảm ơn bạn đã làm rõ về sự phân biệt tài liệu hoạt động có lợi cho res.locals. Bạn xác nhận sự hiểu biết của tôi rằng trong lý thuyết tất cả các phương pháp tiếp cận là về mặt kỹ thuật giống nhau. Hãy chờ thêm nhận xét. Upvoted câu trả lời của bạn ... chắc chắn hữu ích. – Sam