2017-02-23 10 views
0

처음으로 Mongo를 사용하고 있는데 배열이있는 문서를 만드는 데 어려움이 있습니다. 객체는 그래서 같은 nodejs 서버로 전달됩니다몽구스 - mongo DB에 배열이있는 개체 삽입

  var newCustomer = new Customer(
      { 
       _id: request.body.customerid, 
       name: request.body.name, 
       email: request.body.email, 
       address: request.body.address, 
       tokens:request.body.tokens 
      }); 
      newCustomer.save(function (err) { 
       if (err) winston.log('error', err); 
       // saved! 
      }) 

스키마는과 같이 구성되어 있습니다 :

var customerSchema = new Schema({ 

// index: true => Tells mongo to index this paramater because it is used frequently. It makes querying faster 
_id: {type: String, unique: true}, // unique customer ID 

name: {type: String, default: '', required: true}, // Customer name 

//email: {type: mongoose.SchemaTypes.Email, required: true}, 
email: {type: String, required: true}, 

address: { type: String, required: true }, 

toknes: [{ ctoken :{type: String} }] 

}, {collection: 'customers'}); 

내가 가서

{ 
"customerid":"121212", 
"name": "Zero 2679", 
"email": "[email protected]", 
"address": "bla bla bla", 
"tokens":[{"ctoken":"123456"},{"ctoken":"1234567"}] 
} 

코드는 다음과 같은 실행 MongoDB에서 객체를 보면 다음과 같이 보일 것입니다 :

{ 
"_id": "121212", 
"email": "[email protected]", 
"address": "bla bla bla", 
"tokens": [], 
"name": "Zero 2679", 
"__v": 0 
} 

토큰이 누락되어 있으며 '_v'값이 있습니다.

내가 뭘 잘못하고 있는지 조언 해주세요. 스키마에서

+1

_v는 몽고 출신이므로 걱정하지 마십시오 –

답변

1

스키마에

tokens: [{ ctoken : String }]

request.body.tokens해야 =

 var newCustomer = new Customer(
     { 
      _id: request.body.customerid, 
      name: request.body.name, 
      email: request.body.email, 
      address: request.body.address, 
      tokens:[request.body.tokens] 
     }); 
     newCustomer.save(function (err) { 
      if (err) winston.log('error', err); 
      // saved! 
     }) 

{ctoken: 'some string'}와 같은 고객 DB 문서는 데이터를 포함하는 경우 push 작업을 수행해야합니다.

+0

시도해도 여전히 작동하지 않습니다. 제 업데이트 된 질문을보십시오. –

+1

스키마에는'tokens' 대신'toknes' 필드가 있습니다.'console.log (req.body.tokens)' –

+0

4를 입력하면됩니다. 나는 그것을 믿을 수 없습니다. –

0

그것은해야한다 : ctoken으로

tokens: [{ type: String }] 

는 데이터 형식이 아닙니다. 작업 스키마는 아래에 설명되어

var customerSchema = new Schema({ 
_id: {type: String, unique: true}, 
name: {type: String, default: '', required: true}, 
email: {type: String, required: true}, 
address: { type: String, required: true }, 
tokens: [{ type: String }] 
}, {collection: 'customers'}); 
+0

시도해도 여전히 작동하지 않습니다. 제 업데이트 된 질문을보십시오. –