Я предполагаю, что добавление unique: true в поле остановит сохранение в базе данных с тем же значением. Но мне все еще разрешено это делать.
"мангуст": "^ 5.4.19",
const SessionSchema = new Schema({
jobId: {
type: String,
required: false,
unique: true,
index: true,
},
productId: {
type: String,
required: true,
},
status: {
type: String,
default: "Pending",
},
mode: {
type: String,
default: "authentication",
},
result: {
type: Schema.Types.Mixed,
},
requests: [RequestSchema],
callback_at: {
type: Date,
},
}, {
timestamps: { createdAt: "created_at", updatedAt: "updated_at" },
});
Я уже пробовал удалить и воссоздать коллекцию. См. Изображение ниже, я могу создать новый сеанс с тем же идентификатором задания, равным 1.
public store = async (req: Request, res: Response): Promise<any> => {
const input = req.body;
let session = new Session({
productId: input.productId,
jobId: input.jobId,
});
try {
session = await session.save();
const response = {
success: true,
status: 201,
data: { session },
message: "SESSION CREATED",
};
return res.status(response.status).json(response);
} catch (err) {
const response = {
success: false,
status: 500,
errors: [],
message: "UNEXPECTED SESSION ERROR",
};
if (err.code === 11000) {
response.errors.push({
code: 11000,
message: "Duplicate key error jobId",
});
}
return res.status(response.status).json(response);
}
db.sessions.getIndex ();
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "myDB.sessions"
}
]
db.sessions.getIndexes()
(при условии, что это имя вашей коллекции)? - person JohnnyHK   schedule 15.03.2019unique: true
вы перезапускали mongo? Связанная проблема (?): stackoverflow.com/questions/5535610 / - person Andrew Cameron   schedule 15.03.2019autoIndex: false
в своемmongoose.connect
звонке? Если это так, вы можете вызватьSessions.ensureIndexes()
, чтобы вручную запросить создание. - person JohnnyHK   schedule 15.03.2019jobId
s. См. здесь, чтобы узнать, как это можно отладить. - person JohnnyHK   schedule 15.03.2019