Есть ли функция, чтобы превратить строку в objectId в node с помощью mongoose? В схеме указано, что что-то является ObjectId, но когда оно сохраняется из строки, монго говорит мне, что это все еще просто строка. _id объекта, например, отображается как objectId("blah")
.
Node.js Строка Mongoose.js для функции ObjectId
Ответ 1
Вы можете сделать это так:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
Ответ 2
Вы можете сделать это следующим образом:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
EDIT: новый стандарт имеет fromHexString, а не fromString
Ответ 3
Судя по комментариям, вы ищете:
mongoose.mongo.BSONPure.ObjectID.isValid
или
mongoose.Types.ObjectId.isValid
Ответ 4
Я не мог разрешить этот метод (по общему признанию, я долго не искал)
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);
}
Ответ 5
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");