这是我的用户模型,所以你们可以了解我的数据库结构。
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}
}
答案 0 :(得分:2)
似乎user
变量是不可变的,你可以创建另一个对象并将其数据复制到新对象
var _user = {
firstName: user.firstName,
lastName: user.lastName
companies: user.companies[0]
}
只需使用toObject()
函数将mongodb对象转换为普通对象,这样就可以对其进行修改
user = user.toObject()