Mongoose ObjectId : Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
Mongoose ObjectId : Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
我在创建自己的 ObjectId 时遇到困难。我有两个型号:
const TableSchema = new mongoose.Schema ({
....
chairs: [{type: mongoose.Schema.Types.ObjectId, ref: 'ChairModel}]
....
}) ;
const ChairSchema = new mongoose.Schema ({
....
table: {type: mongoose.Schema.Types.ObjectId, ref: 'TableModel}
....
}) ;
当 ObjectId 由 mongoose 生成时,这种模式对我一直有效。
但是当我生成一个 randomAlphaNum 字符串时:
let randomNum = makeRandom(24); // 1etdk0c86762e0fb12dptsli
let TableId = mongoose.Types.ObjectId(randomNum);
我产生错误:
Error: Argument passed in must be a single String of 12 bytes or a
string of 24 hex characters
如何从简单的 alphaNumeric 脚本生成器创建有效的 mongoose ObjectId?
ObjectId 必须由有效的十六进制值组成(您有 p、t 和 s)。一种选择(我不知道你使用哪个库来实现 makeRandom)是将 makeRandom 的字符集限制为 0-9 a-f。
否则,如果它们是随机的,您可以让 mongoose 为您生成 ID:
let tableId = mongoose.Types.ObjectId()
我在创建自己的 ObjectId 时遇到困难。我有两个型号:
const TableSchema = new mongoose.Schema ({
....
chairs: [{type: mongoose.Schema.Types.ObjectId, ref: 'ChairModel}]
....
}) ;
const ChairSchema = new mongoose.Schema ({
....
table: {type: mongoose.Schema.Types.ObjectId, ref: 'TableModel}
....
}) ;
当 ObjectId 由 mongoose 生成时,这种模式对我一直有效。
但是当我生成一个 randomAlphaNum 字符串时:
let randomNum = makeRandom(24); // 1etdk0c86762e0fb12dptsli
let TableId = mongoose.Types.ObjectId(randomNum);
我产生错误:
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
如何从简单的 alphaNumeric 脚本生成器创建有效的 mongoose ObjectId?
ObjectId 必须由有效的十六进制值组成(您有 p、t 和 s)。一种选择(我不知道你使用哪个库来实现 makeRandom)是将 makeRandom 的字符集限制为 0-9 a-f。 否则,如果它们是随机的,您可以让 mongoose 为您生成 ID:
let tableId = mongoose.Types.ObjectId()