是否应在Model.create()上创建一个新的Collection。

问题描述 投票:0回答:1
我正在使用猫鼬,并且有两个模型。当用户登录方法时,用户模型和服务模型将根据用户从findOne()传递的内容将create()用户(如果存在)或req.body一个新用户。

我的服务模式如下:

const serviceSchema = new mongoose.Schema({ name: { type: String, default: 'contentEditor' }, display: { type: String, default: 'Content Editor' }, accessLevel: { type: Number, min: 0, max: 4, default: 4 } });

我的用户模式更大一点,我删除了一些字段/值对,但是嵌入服务模式的部分看起来像这样:

const userSchema = new mongoose.Schema( { email: { type: String, required: [true, 'Must have a email address'], trim: true, unique: true, }, firstName: { type: String, }, lastName: { type: String, }, services: { type: [serviceSchema], ref: 'Services', default: [serviceSchema], }, }, );

当我点击/api/v1/login端点时,将使用Service文档正确创建一个新用户,但是在Mongoose数据库中仅存在一个User集合。如何做到这样,才能同时创建“用户”集合和“服务”集合?

编辑:以下是我在用户登录时创建/查找用户的功能。当找到现有用户时,如果没有找到该用户,它将通过他们的电子邮件返回该用户,然后将创建一个新用户...

两种行为均符合预期

包括

将服务添加到新创建的用户。出乎意料的是,只有一个集合被添加到数据库中。const login = catchAsync(async ({ body: { email, password } }, res, next) => { if (!email || !password) { return next(new AppError('Please provide email and password', 400)); } const { Success } = await webApi(email, password); const mongoUser = await User.findOne({ email }); if (Success && mongoUser) { return createSendtoken(mongoUser, 200, res); } if (Success && !mongoUser) { const newUser = await User.create({ email }); return createSendtoken(newUser, 201, res); } return next(new AppError('User not found', 404)); });
我正在使用猫鼬,并且有两个模型。用户模型和服务模型,当用户登录方法时,将根据存在的内容找到一个用户(如果存在)或创建()一个新用户...
express mongoose mongoose-schema mongoose-populate
1个回答
0
投票
确保您将serviceSchema做成猫鼬模型。

const Services = mongoose.model('Service', serviceSchema)

© www.soinside.com 2019 - 2024. All rights reserved.