NodeJS MongoDB 添加到子文档数组
Posted
技术标签:
【中文标题】NodeJS MongoDB 添加到子文档数组【英文标题】:NodeJS MongoDB Add to Array of Subdocuments 【发布时间】:2021-06-17 08:11:32 【问题描述】:所以我正在开发我的登录系统,使用 Mongo 作为我的后端。我希望能够在一个帐户上拥有多个用户,因此我正在开发一种处理此问题的路线。我有一个帐户模型和一个用户模式。这就是我当前尝试创建用户的方式:
router.post('/CreateUser', async(req, res) =>
try
const acc = await Account.findOne("Email": req.body.Email);
if(!acc) throw Error('Email not found');
var newUser = new User(req.body.User);
acc.Users.push(newUser);
res.status(200).send(success:true);
catch(err)
res.status(400).send(msg:err.toString(),success:false);
);
这是我的用户架构:
const UserSchema = new Schema(
// Name of the user
Username:
type:String,
required:true,
unique:true
,
// PIN for each user
PIN:
type:Number,
require:true
);
module.exports = UserSchema;
我的帐户模型:
const User = require('../Models/UserData');
const AccountSchema = new Schema(
// Email linked to this account
Email:
type:String,
unique:true,
required:true,
index:true
,
// Password for the account
Password:
type : String,
required : true
,
// Users on this account
Users:
type:[User],
required:true
);
module.exports = mongoose.model('Account', AccountSchema);
它返回success:true
,但我在数据库中看到的唯一变化是一个完全为空的全新集合。我还需要检查用户名是否已经存在,但一步一步来。
编辑:这是我用于 POST 请求的正文:
"Email":"Paul@test.com",
"User":
"Username":"56",
"PIN":4659
【问题讨论】:
【参考方案1】:如果您想将记录保存到用户模型以及调用user.save
,请将更新的记录保存到数据库acc.save
router.post('/CreateUser', async(req, res) =>
try
const acc = await Account.findOne("Email": req.body.Email);
if(!acc) throw Error('Email not found');
var newUser = new User(req.body.User);
acc.Users.push(newUser);
const saveAccount = await acc.save(); // SAVE Account
const saveUser = await newUser.save(); // SAVE User
catch(err)
res.status(400).send(msg:err.toString(),success:false);
);
【讨论】:
以上是关于NodeJS MongoDB 添加到子文档数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NodeJS 将数据添加到 MongoDB 中的数组属性?