mongoose存储bug
这几天使用mongoose存储数组时,遇到了一个一直存不成功的bug
Schema :
{
name : String,
pass : String,
userlogo : String,
sex : String,
age : String,
height : String,
weight : String,
BMI : String,
regTime : Date,
calorie : [],
signature : String,
mytrain:[]
}
数据格式
{
time : '2016-4-07',
calorie : 200
}
当我想往calorie数组里push数据的时候一直存储不成功,经过查询才发现mongoose 混合类型数据无法写入的BUG。
如果你使用这种未指定 schema 类型的字段 (schema-less type), 你可以按照你的想法存储任意类型的数据, 但是 Mongoose 也会失去自动检测更改然后 save 更改的能力 (mongoose 为了保证写入的效率, 会做修改检测, 未检测到修改的话就不会写入数据库). 如果要让 Mongoose 去 save 这种混合类型, 你需要主动告诉 Mongoose 该字段有更改, 即调用 document 的 .markModified(path) 方法来做标记, 这样 Mongoose 才知道这个混合字段有更改, 然后才会 save 写入库.
我需要写入数据一个字段时String类型,一个字段时Number类型,
所以在Schema中需要指定数据的类型,然后这个BUG就解决了 (:逃。。。。。
新Schema:
calorie : [
{
time : String,
calorie : Number
}
]