2013-08-30 44 views
6

Tôi gặp lỗi "LoạiError: Không thể đọc thuộc tính '_id' không xác định" trên yêu cầu đăng đơn giản để lưu tài liệu vào bộ sưu tập được gọi là books, Tải trọng của tôi trông giống như sau :LoạiError: Không thể đọc thuộc tính '_id' không xác định

{ 
    "name": "practical view", 
    "author": "DN", 
    "location": "room 50" 
} 

Và tôi chỉ đang thực hiện db.books.save() trong tuyến đường của mình. Vì tôi không chuyển id, điều này lý tưởng nên hoạt động, nhưng không phải trong trường hợp này.

Dưới đây là bãi lỗi đầy đủ Tôi nhận được trên máy chủ nút của tôi:

C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\mongo_client.js:411 
      throw err 
       ^
TypeError: Cannot read property '_id' of undefined 
    at Collection.save (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\collection.js:393:15) 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:203:65 
    at apply (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:16:28) 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:20:25 
    at Db.collection (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\db.js:488:44) 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:268:7 
    at apply (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:16:28) 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:20:25 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:300:4 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\mongo_client.js:408:11 
31 Aug 00:14:30 - [nodemon] app crashed - waiting for file changes before starting... 
+1

đăng mã nơi mã được ném – soulcheck

Trả lời

8

Hãy chắc chắn để NPM cài đặt cơ thể phân tích cú pháp, sau đó thêm

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

app.use(bodyParser());

để phía trên cùng của mã của bạn. Điều này cũng giả định bạn đang sử dụng Express.

+1

Bạn có thể giải thích lý do giải quyết vấn đề này không? – Will

+0

Vì bạn cần sử dụng phần mềm trung gian phân tích cú pháp nội dung để điền req.body. Nếu không, bạn sẽ không thể phân tích cú pháp phản hồi. –

4

Vui lòng thử này:

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

app.use(bodyParser.json()); 

app.use(bodyParser.urlencoded({ extended: true })); 
+2

Vui lòng thêm một số giải thích. Cảm ơn! – Sampada

+0

Trình tạo hàm phân tích cú pháp không được chấp nhận với Express 4. Nguồn: http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4 –

0

Mặc dù có một câu trả lời cho câu hỏi này, một giải pháp khác là để kiểm tra phiên bản của js rõ ràng của bạn trong node.json. Trong trường hợp của riêng tôi, tôi đã chuyển phiên bản từ 3.x thành 4.x và điều đó là đủ để loại bỏ lỗi này. Tôi hi vọng nó giúp ích cho ai đó.