Có chức năng nào để biến một chuỗi thành một đối tượngId trong nút bằng cách sử dụng mongoose không? Lược đồ xác định rằng một cái gì đó là một ObjectId, nhưng khi nó được lưu từ một chuỗi, mongo nói với tôi nó vẫn chỉ là một chuỗi. Ví dụ: đối tượng _id của đối tượng được hiển thị là objectId("blah")
.Chuỗi Mongode.js của Node.js đến hàm ObjectId
Trả lời
Bạn có thể làm điều đó như vậy:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
Bạn có thể làm điều đó như thế này:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
EDIT: tiêu chuẩn mới đã fromHexString hơn fromString
Vâng, thậm chí nhiều tiêu chuẩn "mới" là dường như được mongoose.mongo.BSONPure.ObjectID.createFromHexString() (của mongoose 3.9.7) – Evereq
Đối với những người đang cố gắng làm điều này, đây là một câu trả lời tốt hơn nhiều so với câu trả lời được chọn vì nó sẽ không chuyển đổi id nếu bạn đã sử dụng id mongo. – ed209
Điều này không còn hoạt động, sử dụng câu trả lời được chấp nhận thay vì – paper1111
Đánh giá từ các ý kiến, bạn đang tìm kiếm:
mongoose.mongo.BSONPure.ObjectID.isValid
Hoặc
mongoose.Types.ObjectId.isValid
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
Đây chính là câu trả lời được chấp nhận –
Bạn có thể nhận xét về sự khác biệt giữa 'mongoose.Types.ObjectId' và' mongoose.mongo.ObjectId' không? Các thuộc tính đối tượng của mongoose là khác nhau, nhưng chúng có thể tham chiếu cùng một phương thức bên dưới. Hãy bình luận về các phương thức cơ bản trên 'Types' so với' mongo'. – steampowered
Tôi không thể giải quyết phương pháp này (phải thừa nhận là tôi không tìm kiếm dài)
mongoose.mongo.BSONPure.ObjectID.fromHexString
Nếu schema của bạn mong muốn sở hữu để được loại ObjectId, các chuyển đổi là tiềm ẩn, ít nhất điều này có vẻ là trường hợp trong 4.7.8.
Bạn có thể sử dụng giống như tuy nhiên điều này, mang đến cho một chút flex hơn:
function toObjectId(ids) {
if (ids.constructor === Array) {
return ids.map(mongoose.Types.ObjectId);
}
return mongoose.Types.ObjectId(ids);
}
- 1. So sánh chuỗi ID với BSON :: ObjectId
- 2. Chuyển mảng chuỗi ký tự đến hàm
- 3. Mongoose: Truyền đến ObjectId không thành công cho giá trị
- 4. Làm thế nào để chuyển đổi chuỗi thành ObjectId
- 5. Lợi thế của việc sử dụng một ObjectId thay vì một chuỗi đơn giản là gì?
- 6. Android đến giao tiếp node.js
- 7. Chuyển nhiều đối số đến hàm chuỗi từ pthread_create
- 8. Không thể deserialize PyMongo ObjectId từ JSON
- 9. Chuyển nhiều đối số đến hàm có chuỗi
- 10. truyền chuỗi đến các hàm ctypes theo Python 3.x
- 11. Truyền giá trị từ PhantomJS đến node.js
- 12. Hàng loạt mảng ObjectId ở Mongoose
- 13. Mối quan tâm liên quan đến node.js
- 14. Mongoose - sử dụng cư trên một mảng của ObjectId
- 15. Mongoose: ObjectId So sánh không phù hợp
- 16. Gửi tên miền phụ đến node.js
- 17. Node.js: Viết một hàm để trả về stawn xuất hiện dưới dạng chuỗi
- 18. Mục đích của hàm tạo chuỗi của ostringstream là gì?
- 19. node.js: proxy websockets đến cổng khác
- 20. Sharding bởi ObjectID, nó là đúng cách?
- 21. Cách đặt ObjectId làm kiểu dữ liệu trong mongoose
- 22. Tìm tài liệu với ObjectID trong mongoDB
- 23. http.get và chuỗi truy vấn trong Node.js
- 24. Java MongoTemplate: Upserts Not Generating ObjectId
- 25. Chạy tác vụ trong nhiều chuỗi trên node.js
- 26. ImportError: Không có mô-đun tên ObjectId
- 27. Tìm tên của biến số Python được chuyển đến hàm
- 28. Chuyển unique_ptr đến các hàm
- 29. Chuỗi con đến cuối chuỗi
- 30. Node.js - Cách nhận luồng vào chuỗi
Vâng, đó là một chút sạch hơn trong trường hợp này. Có thể chỉ cần sử dụng mongo.BSONPure nếu làm từTime() – talentedmrjones
Điều này có gây ra lỗi nếu đó là chuỗi không hợp lệ không? Tìm cách tốt nhất để thực hiện xác thực đầu vào trong một API REST cho các trường id mongo. – Zambonilli
Thực tế nó không gây ra lỗi. – Zambonilli