2017-02-23 11 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はmongo出身ですので、心配しないでください –

答えて

1
スキーマ内

tokens: [{ ctoken : String }]

request.body.tokensを= {ctoken: 'some string'}

 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! 
     }) 

、その後、顧客DBドキュメントにデータが含まれている場合のようなものでなければなりませんpush操作を実行する必要があります

+0

これを試しても、まだ動作しません。私の更新された質問を見てください。 –

+1

スキーマに 'tokens'の代わりに' toknes'フィールドがあり、 'console.log(req.body.tokens)' –

+0

4を入力してください、私はそれを信じることができません。 –

0

それは次のようになります。

tokens: [{ type: String }] 

ctokenは、データ・タイプではないので。作業スキーマは以下に例示する:

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

これを試しても、まだ動作しません。私の更新された質問を見てください。 –

関連する問題