Mongoose-插入带有数组到Mongo db的对象



我是第一次使用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: [{ 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!
        })

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

在您的模式中应该是:

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'});

最新更新