몽구스를 사용하여 노드에서 문자열을 objectId로 바꾸는 기능이 있습니까? 스키마는 무언가가 ObjectId임을 지정하지만 문자열에서 저장하면 mongo는 여전히 문자열이라고 말합니다. 예를 들어 객체의 _id는로 표시됩니다 objectId("blah")
.
답변
당신은 그렇게 할 수 있습니다 :
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
답변
다음과 같이 할 수 있습니다 :
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
편집 : 새로운 표준에는 fromString이 아닌 fromHexString이 있습니다.
답변
의견에서 판단하면 다음을 찾고 있습니다.
mongoose.mongo.BSONPure.ObjectID.isValid
또는
mongoose.Types.ObjectId.isValid
답변
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
답변
이 방법을 해결할 수 없었습니다 (물론 오랫동안 검색하지 않았습니다)
mongoose.mongo.BSONPure.ObjectID.fromHexString
스키마가 속성이 ObjectId 유형 인 것으로 예상하면 변환은 암시 적입니다. 최소한 4.7.8의 경우처럼 보입니다.
그러나 다음과 같은 것을 사용할 수 있습니다.
function toObjectId(ids) {
if (ids.constructor === Array) {
return ids.map(mongoose.Types.ObjectId);
}
return mongoose.Types.ObjectId(ids);
}
답변
이것도 사용할 수 있습니다
const { ObjectId } = require('mongodb');
const _id = ObjectId("4eb6e7e7e9b7f4194e000001");
그것을하는 가장 간단한 방법입니다
답변
express 및 mongoose를 통해 REST API를 구현하는 경우 아래 코드 스 니펫을 참조하십시오. (ADD의 예)
....
exports.AddSomething = (req,res,next) =>{
const newSomething = new SomeEntity({
_id:new mongoose.Types.ObjectId(), //its very own ID
somethingName:req.body.somethingName,
theForeignKey: mongoose.Types.ObjectId(req.body.theForeignKey)// if you want to pass an object ID
})
}
...
그것이 도움이되기를 바랍니다.
