【问题标题】:How to assign an array of String to definition of mongoose model in post route如何在后期路由中将字符串数组分配给猫鼬模型的定义
【发布时间】:2019-10-28 16:35:22
【问题描述】:

我正在开发一个关于 Node.JS 的项目,在那里我创建了一个用户模式,它有一个名为 interest 的属性,其中包含 String 数组,同时用请求值分配键,兴趣键不采用请求属性。

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
}

【问题讨论】:

  • 将您的兴趣架构更改为intrests : [String]
  • 也试过了,同样的输出
  • req.body.intersts的console.log是什么
  • console.log(req.body.interests); gives ['web development','Games']

标签: node.js express mongoose mongoose-schema


【解决方案1】:

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

应该是,

... // 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 : [] }

【讨论】:

  • 感谢您的回答,但我得到了带有架构{ "intrests": [], "_id": "5d032e6e2ad2151cf0d1ec8a", "name": "SuryaNara", "email": "surnarayanr8dd8@outlook.com", "phone": 8895591782, "designation": "Java Developer", "address": "186/1783 Mahadev Nagar", "__v": 0 } 的以下输出
  • 拜托,你能把你更新的架构提出问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
相关资源
最近更新 更多