【问题标题】:How can I insert data of user schema to main schema using mongoose如何使用猫鼬将用户模式的数据插入主模式
【发布时间】:2019-06-06 07:29:18
【问题描述】:

我是新手,不知道如何将子架构数据插入父架构数组。:

我的子架构模型定义为:-

 //user model
    var userrSchema = new mongoose.Schema({
        email :     {
                    type: String,
                    required: "Email can't be empty.",
                    // unique: true
                    },
        password:   {
                    type: String,
                    required: "Password name can't be empty."
                    },
    });
mongoose.model('Userr' , userrSchema);

我已将 parent(管理员)架构定义为:-

//define admin schema 
var adminSchema = new mongoose.Schema({
    companyName : {
                type: String,
                required: "Company  name can't be empty.",
                required: false
                },
    admins:     {
                        _id: mongoose.Schema.Types.ObjectId,
                        email :     {
                                    type: String,
                                    required: "Email can't be empty.",
                                    unique: true
                                    },
                        password:   {
                                    type: String,
                                    required: "Password name can't be empty."
                                    },
                        users:[ userrSchema ]   
    }           
});

mongoose.model('Admin', adminSchema);

我在同一个模型文件中定义了两者。我有一个 controller 来注册父架构:-

mongoose.model('Admin', adminSchema);


const Admin = mongoose.model('Admin');
var MongoClient = require('mongodb').MongoClient;

module.exports.registerAdmin = (req, res, next) =>{ 
    var admin = new Admin();
    admin.companyName = req.body.companyName;
    admin.admins = {
                    email : req.body.email,
                    password: req.body.password,
                    users : [] 
    }; 
admin.save((err, doc) =>{

从路由文件注册管理架构后:-router.post('/registerAdmin' , ctrlAdmin.registerAdmin) 我得到 result 为:-

{
    "admins": {
        "email": "xyz@ing.com",
        "password": "$2a$10$juGvica8UTqtmyywnWQuKOo9KpqX9JeFfqy1n6GR4xDL2GMLM0hze",
        "users": []
    },
    "_id": "5cf8b54e66b45740ae68feac",
    "companyName": "ABC"
    "__v": 0
}

那么我将如何注册子架构并将其详细信息推送到父架构users 键?请帮忙 。我是新手,不知道如何插入子架构数据。

编辑:- 使用管理员身份验证更新保存功能

为子架构创建控制器,但运行 url 后没有任何反应:

    module.exports.registerUserr = (req, res, next) =>{ 

        var userr = new Userr();
        userr.email = req.body.email,
        userr.password = req.body.password, 
        userr.firstName = req.body.firstName, 
        userr.lastName = req.body.lastName,
        userr.phoneNumber = req.body.phoneNumber,
        userr.role = "user",
        userr.verified = "false"
        userr.save((err, doc) =>{

        if(!err){
            if(req.userData.role2 === 'admin') {
            console.log("saving successful");
            res.send(doc);
            Admin.findOneAndUpdate({ _id: req.userData.userId },{ admins : { $push: { users: doc }}},
              function (error, success) {
                if (error) {
                  console.log(error);
                }
                console.log(success);
              });
        }             
        }
});

在路线router.post('/registerUserr' ,checkAuth, ctrlUserr.registerUserr);

【问题讨论】:

    标签: node.js mongodb express mongoose mongoose-schema


    【解决方案1】:

    尝试用这个替换保存功能

    userr.save((err, doc) => {
      if (!err) {
        res.send(doc);
        Admin.findOneAndUpdate(
          { _id: req.body.id },
          { admins: { $push: { users: userr }}},
          function (error, success) {
            if (error) {
              console.log(error);
            }
            console.log(success);
          }
        });
      }
    }
    

    【讨论】:

    • 不,它没有被推送:(。相反,正在创建一个我不想创建的新集合。
    • 我正在更新我的保存查询,为当前管理员添加了身份验证。但它仍然没有被推送到管理模式数组
    猜你喜欢
    • 2021-10-07
    • 2016-11-18
    • 2020-04-22
    • 2021-09-11
    • 2017-05-29
    • 2017-07-08
    • 2012-02-02
    • 2016-08-05
    • 2016-04-24
    相关资源
    最近更新 更多