const user = new mongoose.Schema(
{
nano_id: {
type: String,
required: true,
default: () => nanoid(7),
index: { unique: true },
},
...
}如果不是唯一的,如何再次运行nanoid(7)?(自动运行,控制台中没有任何错误)
发布于 2022-07-21 22:04:25
有两种方法可以做到这一点:
const { customAlphabet } = require('nanoid');
const alphabet = '0123456789abcdefghijklmnopqrstuvwxyz';
const nanoid = customAlphabet(alphabet, 8);
// userRegistration controller or route...
async function uniqueNanoId(query): Promise<string> {
const nanoId = nanoid();
const sameNanoId = await User.findOne({ nano_id:nanoId });
if (sameNanoId) {
return uniqueNanoId(query);
}
return nanoId;
}
const nanoId = await uniqueNanoId();
const user = User.create({...userBody,nanoId});
//...已经讨论了捕获重复密钥的问题。
// ...
_id: {
type: String,
default: () => nanoid(),
},
// ...发布于 2022-05-09 22:06:44
该数据库将抛出一个错误,您必须捕获并作出反应,再次生成相同的记录与新生成的纳米线。
https://stackoverflow.com/questions/72174936
复制相似问题