Apart from your syntax errors, your code should work.
- Remember to use plural model names (you have 'User'=>'users').
- don't forget to model your schema's.
- don't forget to use the .populate('userId') method.
- don't forget to connect with the server (happens more often than you think).
- ensure that you really have the documents connected to eachother.
Tested code:
var mongoose = require('mongoose');
// connect with database.
mongoose.connect('mongodb://localhost:27017/temp');
var userScheme = new mongoose.Schema({
email: { type: String },
password: { type: String },
fullName: { type: String },
coverPhoto: { type: String},
profilePhoto: { type: String},
fbUserID: { type: String},
profileExtraInfo: { type: Array},
listings: {type: mongoose.Schema.Types.ObjectId, ref: "Listings"}
});
var listingsScheme = new mongoose.Schema({
category: { type: String, index: true },
title: { type: String },
description: { type: String },
attributes: { type: Array },
nrViews: {type: Number },
photos: { type: Array },
location: { type: Array, index: '2d' },
created: { type: Date, index: true },
updated: { type: Date },
active: { type: Boolean, index: true } ,
userId : { type: mongoose.Schema.Types.ObjectId, ref : 'User' } ,
fullName : { type: String },
profilePhoto : { type : String},
followers : {type : String}
});
// don't forget to 'model' your scheme.
var users = mongoose.model('User', userScheme);
var listings = mongoose.model('listings', listingsScheme);
// create mock user.
var user = new users({
email:'test'
});
// create mock listing with the user_id attached to property userId.
var listing = new listings({
userId:user._id
});
// save the created user and listing.
user.save();
listing.save();
// find ONE document in the collection 'listings'.
// populate the userId.
// execute the function and let mongoose call your callback.
listings.findOne().populate('userId').exec(function(err, doc)
{
// ensure there are no errors.
if(!err && doc)
{
// print the doc we found.
// should give userdoc inside userId property.
console.log(doc);
}
});
// clear collections.
//users.remove({});
//listings.remove({});
Runnable link: http://runnable.com/U24GoC9x3L9alfPc/output