Jimliu


一只刚上路的前端程序猿


Mongoose的小bug

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
    }
]
最近的文章

真球迷的自我修养

真球迷的自我修养忙了一整天,中午也没有看比赛,去球场上致敬科比了。。 …

于  篮球, 随笔 继续阅读
更早的文章

post

记录命令行中的Vim命令 …

于  vim 继续阅读