【问题标题】:Angular is not sending objects in objectsAngular 没有在对象中发送对象
【发布时间】:2015-08-18 21:52:17
【问题描述】:

我将这个带有 Angular.js 的 JSON 发送到我的 node.js/express.js 服务:

{
  "name": "MyGuitar",
  "type": "electric",
  "userid": "123",
  "likes": 0,
  "dislike": 0,
  "guitarParts": {
"body": {
  "material": "/content/img/hout.jpg",
  "_id": "5566d6af274e63cf4f790858",
  "color": "#921d1d"
},
"head": {

},
"neck": {
  "material": "/content/img/hout.jpg",
  "_id": "556d9beed90b983527c684be",
  "color": "#46921d"
},
"frets": {

},
"pickup": {

},
"bridge": {

},
"buttons": {

}

} }

吉他零件未保存在 MongoDB 数据库中。 Mongoose 插入以下内容:

Mongoose: guitars.insert({ name: 'MyGuitar', type: 'electric', userid: '123', likes: 0, _id: ObjectId("557023af9b321b541d4d416e"), guitarParts: [], __v: 0} )

这是我的猫鼬模型:

   guitarPart = new Schema({  
   id: { type: String, required: true },  
   color: { type: String, required: true },  
   material: { type: String, required: true },  
   x: { type: Number, required: false },  
   y: { type: Number, required: false },  
   width: { type: Number, required: false },  
   height: { type: Number, required: false},  
});  

guitarParts = new Schema({  
    body: [guitarPart],  
    neck: [guitarPart],  
    head: [guitarPart],  
    bridge: [guitarPart],  
    frets: [guitarPart],  
    pickup: [guitarPart],  
    buttons: [guitarPart]  
});  

guitar = new Schema({  
    name: { type: String, required: true, unique: false },  
    type: { type: String, required: true },  
    userid: { type: String },  
    likes: { type: Number },  
    dislikes: { type: Number },  
    guitarParts: [guitarParts],  
    kidsguitar: { type: Boolean },  
    lefthanded: { type: Boolean },  
    assemblykit: { type: Boolean }  
},  
{   
    collection: 'guitars'   
});  

我不知道出了什么问题。有什么想法吗?

【问题讨论】:

  • 错字guitarparts -> guitarParts?
  • 感谢您的回答。我试过了,还是不行。

标签: angularjs node.js mongodb express mongoose


【解决方案1】:

根据 Subdocuments 的 mongoose 文档说:子文档是具有自己模式的文档,它们是 父文档数组

的元素

在您提供的架构中:guitarParts 不是数组,它是一个对象,而 guitarPart 不是数组,它也是一个对象。所以这就是它不保存的原因。

因此,为您的 Schema 建模的正确方法是:

var guitarDefinition = {
  _id: {type: String, required: true},
  color: {type: String, required: true},
  material: {type: String, required: true},
  x: Number,
  y: Number,
  width: Number,
  heigth: Number
};

var guitarSchema = Schema({
  name: { type: String, required: true, unique: false },  
  type: { type: String, required: true },  
  userid: String,  
  likes: Number,  
  dislikes: Number ,  
  kidsguitar: Boolean,  
  lefthanded: Boolean ,  
  assemblykit: Boolean,

  guitarParts: {
    body: guitarDefinition,  
    neck: guitarDefinition,  
    head: guitarDefinition,  
    bridge: guitarDefinition,  
    frets: guitarDefinition,  
    pickup: guitarDefinition,  
    buttons: guitarDefinition 
  }
});

其实我已经在我的电脑上运行过了,你可以在这里看到我的完整代码:https://gist.github.com/wilsonbalderrama/f10c38f9fb510865edc2

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多