0

I want to show user's location information on the screen.

For Example:

name: "Andy" surname : "Carol" City : "Istanbul"  Town : "Kadıkoy"

When I call the getuser function I want to display the City and Town name.

This is my code:

UserSCHEMA

// Model for the User 
module.exports = (function userSchema() {

  var Mongoose = require('mongoose');
  var Schema = Mongoose.Schema;

  var userSchema = new Schema({

    name: {
      type: String,
      require: true
    },
    surname: {
      type: String,
      require: true
    },
    tel: {
      type: String,
      require: true
    },
    age: {
      type: String,
      require: true
    },
    mevki_id: {
      type: String,
      require: true
    },
    lok_id: [{
      type: Mongoose.Schema.Types.ObjectId,
      ref: 'locations'
    }]

  });

  var collectionName = 'users';
  var USERSCHEMA = Mongoose.Schema(userSchema);
  var User = Mongoose.model(collectionName, USERSCHEMA);

  return User;

})();

USERController

//This Controller deals with all functionalities of User
function userController() {

  var User = require('../models/UserSchema');

  // Creating New User
  this.createUser = function (req, res, next) {

    var name = req.body.name;
    var surname = req.body.surname;
    var tel = req.body.tel;
    var age = req.body.age;
    var mevki_id = req.body.mevki_id;
    var lok_id = req.body.lok_id;

    User.create({
      name: name,
      surname: surname,
      tel: tel,
      age: age,
      mevki_id: mevki_id,
      lok_id: lok_id
    }, function (err, result) {
      if (err) {
        console.log(err);
        return res.send({
          'error': err
        });
      } else {
        return res.send({
          'result': result,
          'status': 'successfully saved'
        });
      }
    });
  };

  //Populateeee

  this.getUser = function (req, res, next) {

    User.find().populate('lok_id')
      .exec(function (err, result) {
        if (err) {
          console.log(err);
          return res.send({
            'error': err
          });
        } else {
          return res.send({
            'USERS': result
          });
        }
      });
  };

  return this;

};

module.exports = new UserController();

Location Schema

//Schema for Location
module.exports = (function LocationSchema() {

  var Mongoose = require('mongoose');
  var Schema = Mongoose.Schema;

  var LocationSchema = new Schema({

    userid: {
      type: Mongoose.Schema.Types.ObjectId,
      ref: 'users'
    },

    il: {
      type: String,
      require: true
    },

    ilce: {
      type: String,
      require: true
    }

  });

  var collectionName = 'locations';
  var LocationSCHEMA = Mongoose.Schema(schema);
  var Location = Mongoose.model(collectionName, LocationSCHEMA);

  return Location;
})();

Location Controller

//This Controller deals with all functionalities of Location
function locationController() {
  var location = require('../models/LocationSchema');

  // Creating New Location
  this.createLocation = function (req, res, next) {
    var userid = req.params.userid;
    var il = req.params.il;
    var ilce = req.params.ilce;

    location.create({
      userid: userid,
      il: il,
      ilce: ilce
    }, function (err, result) {
      if (err) {
        console.log(err);
        return res.send({
          'error': err
        });
      } else {
        return res.send({
          'result': result,
          'status': 'successfully saved'
        });
      }
    });
  };

  // Fetching Details of Location
  this.getLocation = function (req, res, next) {

    location.find({}, function (err, result) {
      if (err) {
        console.log(err);
        return res.send({
          'error': err
        });
      } else {
        console.log(result);
        return res.send({
          'location Details': result
        });
      }
    });
  };

  return this;

};

module.exports = new locationController();
jwpfox
  • 5,124
  • 11
  • 45
  • 42
MAD
  • 5
  • 7

1 Answers1

0

I already had a problem with model definition. It was fixed by adding the third parameter to mongoose.model (the explicit collection name)

// Try to replace :
var collectionName = 'users'; 
var USERSCHEMA=Mongoose.Schema(userSchema);
var User = Mongoose.model(collectionName, USERSCHEMA);
// with:
var collectionName = 'users'; 
var USERSCHEMA=Mongoose.Schema(userSchema);
var User = Mongoose.model(collectionName, USERSCHEMA, collectionName);
the collectionName must be set either in the schema definition or in the model definition. for more details see here
Roge
  • 94
  • 1
  • 7
  • you say right but my create user function is wrong May u look at this function in User controller ? – MAD Dec 21 '16 at 10:44