How to add to User Object Node.JS

时间:2017-08-05 11:05:36

标签: node.js mongodb express mongoose database

I'm new to node so bear with me!

I am working on my auth system. I have login, register and logout done so far. Now I want to update my user in the settings page. How would I go about updating the already added User items such as username, password and email? And most importantly adding new ones such as API Key, and API Secret.

Here is my code:

var UserSchema = mongoose.Schema({
    username: {
        type: String,
        index:true
    },
    email: {
        type: String
    },
    password: {
        type: String
    },
    apiKey: {
        type: String
    },
    apiSecret: {
        type: String
    }
});

My user schema, the api key info is not added on registration. Should it be in the schema or will it be added automatically later?

    var newUser = new User({
                username: username,
                email:email,
                password: password
            });
User.createUser(newUser, function(err, user){
                    if(err) throw err;
                    console.log(user);
                    req.flash('success_msg', 'You are registered and can now login');

                    res.redirect('/users/login');
                });

How I create the new user after verification.

router.post('/settings', function(req, res){
    var apiKey = req.body.apiKey;
    var apiSecret = req.body.apiSecret;
    //INSERT api info into DB here
});

Where I get the API keys from a form and then want to insert them into the User that is currently logged in. This is where my problem is.

Thank you in advance for any help!

1 个答案:

答案 0 :(得分:3)

假设您可以像req.user

那样访问登录用户
router.post('/settings', function(req, res) {
    var updateFields = {
        apiKey: req.body.apiKey,
        apiSecret: req.body.apiSecret
    }

    User.findOneAndUpdate({"_id": req.user._id}, {"$set": updateFields}, {"new": true}})
      .exec(function(err, user) {
          if (err) {
           //handle err
          } else {
           //user contains updated user document
          }
      });

});

是的,你应该保留你想要在模式中插入的所有字段。否则他们不会插入数据库。