Nó được mô tả trong Câu hỏi thường gặp về node-postgres https://github.com/brianc/node-postgres/wiki/FAQ#11-how- do-i-build-a-where-foo-in - query-to-find-row-match-an-array-of-value
Làm cách nào để tạo truy vấn WHERE foo IN (...) để tìm các hàng phù hợp với một mảng giá trị? node-postgres hỗ trợ ánh xạ các mảng JavaScript đơn giản sang mảng PostgreSQL, vì vậy trong hầu hết các trường hợp, bạn có thể chuyển nó giống như bất kỳ tham số.
client.query("SELECT * FROM stooges WHERE name = ANY ($1)", [ ['larry', 'curly', 'moe'] ], ...);
Lưu ý rằng =ANY là một cách khác để viết IN (...), nhưng không giống như IN (...), nó sẽ hoạt động theo cách bạn mong đợi khi bạn truyền một mảng làm tham số truy vấn.
Nếu bạn biết trước độ dài của mảng, bạn có thể làm phẳng nó thành danh sách IN:
// passing a flat array of values will work:
client.query("SELECT * FROM stooges WHERE name IN ($1, $2, $3)", ['larry', 'curly', 'moe'], ...);
... nhưng có rất ít lợi ích khi =ANY hoạt động với một mảng JavaScript.
Nếu bạn đang sử dụng phiên bản cũ của node-postgres hoặc bạn cần tạo các mảng PostgreSQL phức tạp hơn (các mảng kiểu kết hợp, v.v.) mà node-postgres không đối phó được, bạn có thể tạo một mảng ký tự bằng SQL động, nhưng cực kỳ cẩn thận với SQL injection khi thực hiện việc này. Cách tiếp cận sau đây an toàn vì nó tạo một chuỗi truy vấn với các tham số truy vấn và danh sách tham số được làm phẳng, vì vậy bạn vẫn đang sử dụng hỗ trợ của trình điều khiển cho các truy vấn được tham số ("câu lệnh chuẩn bị") để bảo vệ khỏi việc đưa vào SQL:
var stooge_names = ['larry', 'curly', 'moe'];
var offset = 1;
var placeholders = stooge_names.map(function(name,i) {
return '$'+(i+offset);
}).join(',');
client.query("SELECT * FROM stooges WHERE name IN ("+placeholders+")", stooge_names, ...);
Hy vọng điều đó sẽ giúp ích vì google không tìm thấy điều này