2014-02-14 4 views
1

Я новичок в NodeJS и MongoDB и пробежал следующей проблемой при создании приложения образцаCast к ObjectId Сбой объекта объекта значение на пути мангуста

// ************ this is testusers.js file ************// 

var userdetails = require('userdetails'); 
var mongoose = require('mongoose'); 
var schema = mongoose.Schema; 

var geekDetails = new schema({ 
    description: String, 
    details: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'userDetails' 
    } 
}); 
module.exports = { 
    model: mongoose.model('geekDetails',geekDetails), 
    schema: geekDetails 
}; 


// ************ this is user.js file ************// 

var mongoose = require('mongoose'); 
var schema = mongoose.Schema; 
var userDetails = new schema({ 
    firstName: String, 
    lastName: String, 
    email: String, 
    password: String 
}); 

module.exports = { 
    model: mongoose.model('userDetails',userDetails), 
    schema: userDetails 
}; 


// ************ this is create.js file [used to save the details to DB] *******// 

var testusers = require('testusers.js'); 
var mongoose = require('mongoose'); 

adduser = function(firstName,lastName,email,password,passwordConfirmation,description,callback){ 

    new testusers.model({ 
     description: description, 
     details: { 
      firstName: firstName, 
      lastName: lastName, 
      email: email, 
      password: password 
     } 
    }).save(function(err,result){ 
     if (err){ 
      callback(err,null); 
     } 
     else { 
      callback(null,result); 
     } 
    }); 

Когда я попытался сохранить детали он возвратил следующую ошибку "cast to objectid не удалось создать объект объекта объекта по пути 'details'« Я уверен, что я делаю что-то неправильно со схемами, но я не мог понять это.

Заранее спасибо

+0

Как насчет использования 'mongoose.Types.ObjectId'? –

ответ

2

Сохранение ссылочного документа, как это не будет работать с мангуста таким образом. Вот один из вариантов. По существу, сначала необходимо сохранить внедренный документ (userdetails) и использовать идентификатор для сохранения родителя (testuser).

adduser= function(firstName,lastName,email,password,passwordConfirmation, 
    description,callback){ 

    new userDetails.model({ 
     firstName:firstName, 
     lastName:lastName, 
     email:email, 
     password:password 
    }).save(function(err,doc){ 
     new testusers.model({ 
      description:description, 
      details: doc._id 
     }).save(function(err,result){ 
      if(err){callback(err,null);} 
      else{callback(null,result);} 
     }); 
    }); 
} 

Использование обещаний может сделать этот код лучше для чтения, но это должно дать идею.

+0

благодарит киран, это сэкономило мне много времени – mahesh

Смежные вопросы