Arrays Mongoose-将带有数组的对象插入MongoDB

Arrays Mongoose-将带有数组的对象插入MongoDB,arrays,json,node.js,mongodb,Arrays,Json,Node.js,Mongodb,我第一次使用Mongo,在创建一个包含数组的文档时遇到了困难。 对象被传递到nodejs服务器,如下所示: { "customerid":"121212", "name": "Zero 2679", "email": "a@a.com", "address": "bla bla bla", "tokens":[{"ctoken":"123456"},{"ctoken":"1234567"}] } 该代码执行以下操作: var newCustomer = new Custo

我第一次使用Mongo,在创建一个包含数组的文档时遇到了困难。 对象被传递到nodejs服务器,如下所示:

{
"customerid":"121212",
"name": "Zero 2679",
"email": "a@a.com",
"address": "bla bla bla",
"tokens":[{"ctoken":"123456"},{"ctoken":"1234567"}]
}
该代码执行以下操作:

           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'});
当我去看MongoDB中的对象时,它看起来是这样的:

{
"_id": "121212",
"email": "a@a.com",
"address": "bla bla bla",
"tokens": [],
"name": "Zero 2679",
"__v": 0
}
令牌丢失了,还有一个我甚至没有的'_v'值


请告知我做错了什么?

在您的模式中,应该是:

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'});
在您的模式中

令牌:[{ctoken:String}]

request.body.token必须类似={ctoken:'some string'}


如果客户数据库文档包含数据,则应执行推送操作

尝试此操作后,仍不起作用。请看一下我更新的问题。在模式中,有一个toknes字段而不是tokens,请执行console.logreq.body.tokens4,一个输入错误,我不敢相信。@p0k8_13,是的。尝试了这个,仍然不起作用。请看一下我的最新问题。_v来自mongo,别担心
       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!
        })