Tôi có giao diện truy vấn MongoDB và gửi truy vấn từ trình duyệt đến NodeJS thông qua các yêu cầu HTTP. Truy vấn được gửi dưới dạng chuỗi, có thể như thế này:
var query = '{_id: ObjectId(\'536b07935c89be214c000009\'), "date": ISODate("2012-12-19T06:01:17.171Z"), mail: /test/i}'
Câu hỏi của tôi là, làm cách nào tôi có thể đánh giá chuỗi này một cách an toàn để gửi nó đến máy khách MongoDB NodeJS?
đánh giá
Không phải là một tùy chọn (trên MongoDB và NodeJS) vì đây là một phần của ứng dụng dành cho người tiêu dùng.
Tôi sẵn sàng đón nhận các giải pháp bảo mật khác, chuyển truy vấn qua HTTP và thực thi chúng một cách chính xác trên máy chủ.
Chuỗi bạn cung cấp là truy vấn shell mongodb. Chuỗi này chứa các kiểu dữ liệu cụ thể của shell mongodb và do đó chỉ có thể được sử dụng bên trong shell mongodb. Bạn không thể phân tích hoặc đánh giá các truy vấn này trong môi trường (javascript) khác vì chúng không phải là JSON hợp lệ. Do đó, do một loại dữ liệu cụ thể,đánh giá
hoặc JSON.parse
Thậm chí không thể làm việc.
Nếu bạn muốn tuần tự hóa các truy vấn mongodb để sử dụng trong các môi trường khác nhau, bạn có thể sử dụng MongoDB Extended JSON.
https://docs.mongodb.org/v3.0/reference/mongodb-extends-json/
Đây là JSON tiêu chuẩn và có thể chứa các kiểu dữ liệu mongodb. Truy vấn của bạn sẽ trông như thế này trong MongoDB Extended JSON.
{
"_id": {
"$oid": "536b07935c89be214c000009"
},
"ngày": {
"$date": "2012-12-19T06:01:17.171Z"
},
"thư": {
"$regex": "kiểm tra",
"$options": "i"
}
}
Nếu bạn muốn phân tích hoặc đánh giá một chuỗi như vậy để chuyển nó tới trình điều khiển mongodb của Node.js, bạn cần sử dụng một thư viện để giải tuần tự hóa nó thành đối tượng trình điều khiển MongoDB của Node.js chính xác.
Bạn có thể sử dụng thư viện này để làm điều này:
https://www.npmjs.com/package/mongodb-extends-json
Bạn cũng có thể sử dụng thư viện này trong trình duyệt để xây dựng truy vấn. Hoặc bạn có thể xây dựng truy vấn mongodb theo cách thủ công.
Tôi không biết về gói plugin/npm cho phép bạn tự động chuyển đổi các truy vấn shell mongodb sang JSON mở rộng MongoDB. Bạn có thể thử chuyển đổi chúng một cách tự động bằng cách triển khai một số loại của riêng bạn (ISODate, ObjectId). Tuy nhiên, sẽ không bao giờ có sự tương thích hoàn toàn giữa shell mongodb và trình điều khiển mongodb Nodejs, nhiều phương thức có chữ ký và kiểu trả về khác nhau, con trỏ hoạt động khác nhau, v.v...
Ngoài ra còn có một dự án thay thế cho trình điều khiển mongodb nodejs được hỗ trợ chính thức, dự án này cố gắng bắt chước shell nhiều hơn nếu bạn thực sự coi trọng nó, nhưng nó sẽ không giúp bạn giải quyết truy vấn cụ thể của mình, bạn vẫn cần chuyển đổi nó.
https://docs.mongodb.org/ecosystem/drivers/node-js/
Tôi là một lập trình viên xuất sắc, rất giỏi!