Passing model parameters into a mongoose model

express, mongodb, mongoose, node.js

Solution

_ = require("underscore")

var model = new Example(_.extend({ userId: req.user._id }, req.body))

or if you want to copy userId into req.body:

var model = new Example(_.extend(req.body, { userId: req.user._id }))

Problem

I have a mongoose model that has an association with a user model e.g. ``` var exampleSchema = mongoose.Schema({ name: String, <some more fields> userId: { type:mongoose.Schema.Types.ObjectId, ref: 'User' } }); var Example = mongoose.model('Example', userSchema) ``` When I instantiate a new model I do: ``` // the user json object is populated by some middleware var model = new Example({ name: 'example', .... , userId: req.user._id }); ``` The model's constructor takes a lot of parameters which has become tedious to write and refactor when the schema changes. Is there way of doing something like: ``` var model = new Example(req.body, { userId: req.user._id }); ``` Or is the best way to create a helper method to generate a JSON object or even attach the userId to the request body? Or is there way that I haven't even thought of?

Original source