表达如何将数组转换为对象的js

时间:2015-11-21 22:40:48

标签: javascript node.js mongodb express

这是我的用户模型,所以你们可以了解我的数据库结构。

var userSchema = new Schema({
firstName: {type: String, required: true, trim: true},
lastName: {type: String, required: true, trim: true},
address: {
    street: {type: String, required: true, trim: true},
    city: {type: String, required: true, trim: true},
    state: {type: String, min: 2, max: 2, required: false},
    zipCode: {type: String, required: true, trim: true},
},
companies:[
    {
        type: Schema.Types.ObjectId,
        ref: 'Company',
        required: true
    }
],
edited: {type: Date},
created: {type: Date, default: Date.now}
});

我正在尝试让用户和与该用户相关的公司。我正在接受这个。

router.post('/', function(req, res){

var email = req.body.email;
var password = req.body.password;


User.findOne({email: email, password: password, active: true})
    .populate('companies')
    .exec(function(err, user){

    if(err){
        throw err;
    }
    else if (!user) {
        //user wasn't found
        res.render('/', {validation: "Invalid Email Or Password"})
    }
    else {

        user.companies = user.companies[0];

        console.log(user);

        res.end();

    }

});
});

在console.log(用户)中我得到了这个输出:

{
    firstName: 'firstName',
    lastName: 'lastName'
    companies:[{object}]
}

现在我的代码问题就是我说公司数组应该是这行代码中的一个对象。

user.companies = user.companies[0];

我的问题是如何让控制台输出像这样。

    {
    firstName: 'firstName',
    lastName: 'lastName'
    companies:{object}
}

1 个答案:

答案 0 :(得分:2)

似乎user变量是不可变的,你可以创建另一个对象并将其数据复制到新对象

var _user = {
    firstName: user.firstName,
    lastName: user.lastName
    companies: user.companies[0]
}

OR

只需使用toObject()函数将mongodb对象转换为普通对象,这样就可以对其进行修改

user = user.toObject() 
相关问题