2015-11-21 6 views
1

Это моя модель пользователя, так что вы, ребята, можете получить представление о моей структуре базы данных.express js как преобразовать массив в объект

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} 
} 

ответ

2

кажется, что user переменная неизменна, вы можете создать еще один объект и скопировать свои данные на новый объект

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

ИЛИ

просто использовать toObject() функцию для преобразования объекта MongoDB в обычный объект , поэтому его можно изменить

user = user.toObject() 
+0

thank yo u пользователь.toObject() сделал трюк. – user3862830

Смежные вопросы