如何在 post 路由中将字符串数组分配给猫鼬模型的定义

How to assign an array of String to definition of mongoose model in post route

我正在做一个关于 Node.JS 的项目,我在那里创建了一个用户模式,其中有一个名为 interests 的 属性 包含字符串数组,同时将请求值分配给 interests key不取请求的值属性.

POST 路线:

app.post('/users', (req,res) => {
  var user = new Users({
    name : req.body.name,
    email : req.body.email,
    phone : req.body.phone,
    designation : req.body.designation,
    address : req.body.address,
    intrests : req.body.intersts //Here I have added an array of String
  });

  user.save().then((userData) => {
    res.status(200).send(userData);
  }).catch((e) => {
    res.status(400).send(e);
  })
});

用户模式

var UserSchema = new Schema({
  name : {
    type : String,
    required : true,
    trim : true,
    minlength : 5,
    unique : true
  },
  email : {
    type : String,
    required : true,
    trim : true,
    minlength : 5,
    validiate : {
      validator : validator.isEmail,
      message : 'Email is Valid'
    }
  },
  phone : {
    type : Number,
    minlength : 10,
    required : true
  },
  designation : {
    type : String,
    minlength : 4,
    required : true
  },
  address : {
    type: String,
    required : true
  },
  intrests : {
      type : Array,
      default : [],
      required : true
  }
});

我输入了以下内容...

{
    "name" : "Surya",
    "email" : "suryanarayan88@outlook.com",
    "phone" : "8895591782",
    "designation" : "Java Developer",
    "address" : "186/1783 Mahadev Nagar",
    "intrests" : ["web developement","Games"]
}

我得到的结果是...

{
    "_id": "5d031d27acc9840c7c3997a0",
    "name": "Surya",
    "email": "suryanarayan88@outlook.com",
    "phone": 8895591782,
    "designation": "Java Developer",
    "address": "186/1783 Mahadev Nagar",
    "intrests": [
        null
    ],
    "__v": 0
}

您的架构对于存储数组或字符串是错误的

应该是,

... // rest of schema code
address : { type: String, required : true},
intrests : {type: Array,  required : true, default : [] }

因为您之前 interests 的架构需要一个对象数组 [{interest: []}]

你正在传递 ["web developement","Games"] 一个字符串数组。

注意:根据您的评论, 这个.

interests : [{
      type : String,
      default : [],
      required : true
  }]

在你的架构中应该是这个。

intrests : {type: Array,  required : true, default : [] }