2016-05-24 37 views
0

我有這樣的JS代碼,這將有CRUD功能貓鼬,而不添加值在對象上的MongoDB

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 

var mongoose = require('mongoose'); 

var options = { 
    db: { native_parser: true }, 
    server: { poolSize: 5 } 
}; 

mongoose.connect('mongodb://localhost/agenda', options); 

var Schema = mongoose.Schema; 

var contatoSchema = new Schema({ 

    nome: String, 
    telefones: [], 
    createdOn: {type: Date, default: Date.now} 

}); 

var Contato = mongoose.model("Contato", contatoSchema); 

app.use(bodyParser.json()); 

app.use(express.static('public')); 

app.post('/adicionar', function(req, res){ 

    var contato = req.body; 

    contato = new Contato({nome: contato.nome, telefones: contato.telefones}); 

    contato.save(function(err, data){ 
     if (err) console.log(err); 

     else res.json(data); 

    }); 

}); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

當我嘗試使用URL「/ adicionar」添加對象的郵差it`sa服務器:

{ 
    "nome": Vinicius, 
    "telefones": [ 
    123456 
    ] 
} 

他給了我這個答案

{ 
    "__v": 0, 
    "_id": "57439973e033c9902174cad0", 
    "createdOn": "2016-05-23T23:59:47.284Z", 
    "telefones": [] 
} 

的問題是功能不`噸傳遞正確的'nome'和'telefone'字段中的值,但是他在mongoDB上創建了數組'telefones',我也創建了數據庫'議程',並且他還創建了'contato'集合。

我試圖重寫代碼搜索語法錯誤,我認爲bodyParser或Express mondule不工作,但我安裝了兩個文件夾。

其他請注意,當我將nome:contato.nome,telefones:contato.telefones的值更改爲nome:「vinicius」,telefones:[1235312],並將代碼作爲節點應用程序運行時,他會在帶有這些值的mongo DB。

+0

你是什麼意思的最後一段?您將代碼作爲節點應用程序運行? –

+0

使用Eclipse ide –

+0

在eclipse中它使用什麼客戶端?如果您使用休息客戶端,那麼您可能沒有使用正確的身體編碼設置郵遞員。 –

回答

0

你需要請求爲JSON

{ 
    "nome": "Vinicius", 
    "telefones": [ 
    123456 
    ] 
} 

嘗試這樣定義

var contatoSchema = new Schema({ 
    nome: String, 
    telefones: [Number], 
    createdOn: {type: Date, default: Date.now} 
}); 
+0

does not't work,same problem:/ –

+0

can you show me req.body? – KibGzr

+0

req.body來自body-parser節點模塊 –