2016-07-01 2 views
0

В настоящее время я работаю над проектом, основанным на MEAN, и я подключаю часть монго + узла к AngularJS. Я использую Mongoose для схем, что очень удобно, но я встречаю странное поведение с вложенными схемами. Я создаю документ в AngularJS, который я отправляю в часть Node.js с запросом $ http.post. При его получении логика сервера использует функцию Model.create Mongoose для вставки ее в коллекцию. Он успешно выполняет, но функции create не хватает частей документа и заменяет некоторые вложенные объекты на Booleans.Mongoose create() приносит нежелательные изменения в документы

Вот выход Node.js при получении документа:

{ title: 'First Try', 
    branch: 2, 
    app: { name: 'Agirc Arrco' }, 
    time: 
    { periodNumber: 26, 
    periodDisplay: '27/06/2016', 
    submitDate: 1467304996377 }, 
    author: { name: 'Doe', surname: 'John', id: 0 }, 
    meta: 
    { read: false, 
    priority: 3, 
    color: 'light-green', 
    type: true, 
    id: 6, 
    gathered: false }, 
    elements: 
    [ { title: 'Sample', 
     description: 'Sample', 
     priority: 3, 
     app: [Object], 
     color: 'light-green', 
     type: 1, 
     id: 0 } ], 
    holidayData: 
    { start: '30/06/2016', 
    startDisplay: '30/06/2016', 
    end: '', 
    endDisplay: '' }, 
    comments: '', 
    rights: 
    { editable: { level: false, branch: false, people: [Object] }, 
    restriction: { level: false, branch: false, people: [Object] } } } 

Здесь выходной сигнал после того, как документ был вставлен в коллекции:

{ __v: 0, 
    title: 'First Try', 
    meta: true, 
    comments: '', 
    _id: 57754c24b322186ef2ace2c0, 
    author: { name: 'Doe', surname: 'John', id: 0 }, 
    rights: 
    { restriction: { level: false, branch: false, people: [Object] }, 
    editable: { level: false, branch: false, people: [Object] } }, 
    elements: [ true ], 
    time: 
    { periodNumber: 26, 
    periodDisplay: '27/06/2016', 
    submitDate: 1467304996377 }, 
    app: { name: 'Agirc Arrco' } } 

Здесь схема Мангуст:

var Report = mongoose.model('Report',{ 
    title : String, 
    app : {name : String, id : Number}, 
    time : {periodNumber : Number, periodDisplay : String, submitDate : Number}, 
    meta : { 
    read : Boolean, 
    priority : Number, 
    color : String, 
    type : Boolean, 
    id : Number 
    }, 
    elements : [{ 
    title : String, 
    description : String, 
    type : Number, 
    priority : Number, 
    color : String, 
    app : {name : String, id : Number} 
    }], 
    rights : { 
    editable : { 
     level : Boolean, 
     branch : Boolean, 
     people : [{id : Number, bool : Boolean}] 
    }, 
    restriction : { 
     level : Boolean, 
     branch : Boolean, 
     people : [{id : Number, bool : Boolean}] 
    } 
    }, 
    comments : String, 
    author : {name : String, surname : String, id : Number} 
}); 

И логика на стороне сервера:

app.post('/api/reports',function(req,res){ 
    var report = req.body; 
    console.log(report); 
    Report.create(report, function(err,report){ 
    if(err) res.send(err); 
    console.log('Created:'); 
    console.log(report); 
    console.log('Error? '); 
    console.log(err); 
    //Reload reports 
    Report.find(function(err,reports){ 
     if(err) res.send(err); 
     res.json(reports); 
    }); 
    }); 
}); 

Ошибка ошибки выбрана Mongoose, так как я получаю «нулевой» вывод при отображении переменной err. Любые подсказки по этому вопросу были бы оценены, я не нашел ни одного случая, который бы соответствовал этому ...

Спасибо!

ответ

0

Нельзя использовать ключевые слова Mongoose в качестве свойств полей в схеме.
meta : { read : Boolean, priority : Number, color : String, type : Boolean, id : Number },
Например, «type» указывает тип поля в Mongoose, поэтому из вышеприведенного фрагмента mongoose предполагает, что поле «meta» является логическим, потому что вы указали, что его «тип». Просто переименуйте 'type' в другое.
Кроме того, у вас нет «ветки» и «holidayData» в вашей схеме.

+0

Где я могу узнать обо всех ключевых словах Mongoose? – Alex

+0

просто прочитал документы http://mongoosejs.com/docs/ – sparik

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