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