node.js - Getting a list/array of users using Mongoose populate -
i'm trying display list of user display names on 1 of webpages doing simple http request.
in users.server.controller.js file have function:
exports.list = function(req, res) { user.find().populate('displayname').exec(function(err, users) { console.log(users); if (err) { return res.status(400).send({ message: errorhandler.geterrormessage(err) }); } else { res.jsonp(users); } }); }; when call function $http.get() request angularjs controller get 400 error.
here mongoose user schema
/** * user schema */ var userschema = new schema({ firstname: { type: string, trim: true, default: '', validate: [validatelocalstrategyproperty, 'please fill in first name'] }, lastname: { type: string, trim: true, default: '', validate: [validatelocalstrategyproperty, 'please fill in last name'] }, organization: { type: string, trim: true, default: '', required: 'please fill in organization name' }, position: { type: string, trim: true, default: '', required: 'please fill in title of position' }, displayname: { type: string, trim: true }, email: { type: string, trim: true, default: '', validate: [validatelocalstrategyproperty, 'please fill in email'], match: [/.+\@.+\..+/, 'please fill valid email address'] }, username: { type: string, unique: 'testing error message', required: 'please fill in username', trim: true }, password: { type: string, default: '', validate: [validatelocalstrategypassword, 'password should longer'] }, salt: { type: string }, provider: { type: string, required: 'provider required' }, providerdata: {}, additionalprovidersdata: {}, roles: { type: [{ type: string, enum: ['user', 'admin'] }], default: ['user'] }, updated: { type: date }, created: { type: date, default: date.now }, /* reset password */ resetpasswordtoken: { type: string }, resetpasswordexpires: { type: date } });
it seems confuse between populate , select. populate used when have reference external schema owner : { type: schema.objectid, ref: 'user' }. if want display owner fields, need call populate('owner') load user. need call .select("displayname") in order retrieve displayname in result.
Comments
Post a Comment