Ниже приведена моя схема пользователя
const userSchema = new mongoose.Schema(
{
email: {
type: String,
required: true,
trim: true,
unique: true
},
password: {
type: String,
required: true
},
name: {
type: String,
required: true
},
accessToken: {
type: String
}
},
{
timestamps: true
}
);
const User = mongoose.model("User", userSchema);
module.exports = User;
Ниже приведена схема моей учетной записи
const accountSchema = new Schema(
{
user: {
type: Schema.Types.ObjectId,
ref: "User",
},
dailySummary: [
{
dailyCreatedAt: {
type: String,
trim: true,
},
profit: {
type: Number,
},
expenditure: {
type: Number,
},
income: {
type: Number,
},
},
],
monthlySummary: [
{
monthlyCreatedAt: {
type: String,
trim: true,
},
lastUpdated: {
type: String,
},
profit: {
type: Number,
},
expenditure: {
type: Number,
},
income: {
type: Number,
},
},
],
yearlySummary: [
{
year: {
type: Number,
},
lastUpdated: {
type: String,
},
profit: {
type: Number,
},
expenditure: {
type: Number,
},
income: {
type: Number,
},
},
],
},
{ timestamps: true }
);
const Account = model("Account", accountSchema);
module.exports = Account;
Вот как я ее использую в своем контроллере
const Account = require("../models/Account");
Я пытаюсь создать учетную запись для пользователя, если у него ее нет. Код для этого следующий:
createAccount: async (req, res) => {
const user = req.user;
try {
let account = await Account.findOne({ user: user._id });
if (!account) account = await Account.create({ user: user._id });
res.json({ statusCode: 200, account });
} catch (err) {
console.log(err.message);
res.status(500).json({ statusCode: 500, message: "Server Error" });
}
}
ОШИБКА
E11000 duplicate key error collection: Accountant.accounts index: dailySummary.dailyCreatedAt_1 dup key: { dailySummary.dailyCreatedAt: null }
createAccount отлично работает при вызове для первого пользователя. Когда он вызывается для другого пользователя, он показывает вышеуказанную ошибку.
Если я добавлю несколько фиктивных значений для учетной записи, созданной для первого пользователя, то createAccount для второго пользователя будет работать.
FYI - req.user содержит _id, имя, адрес электронной почты, пароль, accessToken
Plz, дайте мне знать, что я делаю неправильно