Я работаю над личным проектом, в котором пользователь сможет зарегистрироваться со своей электронной почтой / google / или facebook, и этот пользователь будет называться "basi c account".
В то же время я хочу этот пользователь сможет создать интернет-магазин. На данный момент это легко для меня, потому что все, что я могу сделать, это проверить, вошел ли пользователь в систему или нет, если он вошел, я позволю ему создать схему бизнес / магазина, и она будет ссылаться в соответствии с этим. user.
Но, представьте себе, кто-то никогда ранее не регистрировался в системе, и он хочет создать учетную запись в магазине / магазине, где, где я нахожу это немного трудным для понимания.
Что я сделал пока что я создаю пользовательскую схему, такую как:
const UserSchema = Schema({
name: { type: String},
googleId: { type: String },
email: { type: String},
password: { type: String},
phone: { type: String},
avatar: { type: String },
method: {type: String},
// role: {type: String},
roles: [String],
id: {type: String},
resetPasswordToken: { type: String },
resetPasswordExpires: { type: Date },
usedPasswords: [
{
type: String
}
],
joined: { type: Date, default: new Date() }
});
Когда я регистрирую этого пользователя, я назначаю ему роль, а pu sh роль этому массиву, потому что у этого пользователя может быть две роли. Чтобы иметь возможность публиковать sh магазин и войти в его магазин или использовать обычный сервис.
Другой вариант заключается в том, что я мог бы просто создать новую отдельную схему и назвать ее "BussinesShema", например как:
const ShopSchema = new Schema({
user: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
shopName: { type: String },
accountType: { type: String },
shopOwner: { type: String },
email: { type: String, required: true, unique: true },
shopPhone: { type: String },
addressOne: { type: String },
addressTwo: { type: String },
town: { type: String },
password: { type: String, required:true },
services: [{ serviceName: { type: String }}],
shopDrescription: { type: String },
reviewed: { type: Boolean, default: false },
date_created: { type: Date, default: Date.now },
});
, где новый пользователь может просто создать новую учетную запись. но когда я попробовал это, я обнаружил, что должен исправить обработку моего паспорта jwt, потому что я использую модель, отличную от модели пользователя. В основном, когда дело доходит до аутентификации с использованием паспорта, я должен был создать новую стратегию, потому что эта стратегия проверяет только UserSchema.
Я знаю, что это немного долго, и надеюсь, что кто-то понял мои пункты. Итак, в двух словах, как спроектировать базу данных, которая позволит новому пользователю создавать новый бизнес-аккаунт и позволит существующему пользователю создать аккаунт магазина.
Заранее спасибо