Mongo node mongoose易坑点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianleking/article/details/80277438

mongoose model结构

var UserSchema = new Schema({
    name: { type: String },
    roleId: { type: String},// 看此字段
    menuRoleId:{ type: Schema.Types.ObjectId, ref:'SysRole' },  // 看此字段
    create_at: { type: Date, default: Date.now },
    update_at: { type: Date, default: Date.now }
});
  • type设置的类型,必须和库中的实际数据类型完全一致,否则无法查询
    1.设成 Schema.Types.ObjectId类型的

    a.可在代码直接根据ObjectId的String串查询
    b.库中此字段必须为ObjectId类型,即为ObjectId(‘XXXXXXXXXXXXXXXXXXXXXXXX’).否则无法查询

    2.type设成string类型的id串,库中必须存储’XXXXXXXXXXXXXXXXXXXXXX’类型的串

    (特别在接口没开发或待开发时,团队他人需要模拟数据时,直接修改库数据,代码查询会遇到这个问题)

  • mongoose查询到的数据对象,不可直接修改覆盖

    如查询的数据为:

{
    "_id" : ObjectId("5af4f21f1a5891cab55de0ac"),
    "roleId:"5af4f21f1a5891cab55de0bd",
    "menuRoleId":ObjectId("5af4f21f1a5891cab55de0234"),
    "update_at" : ISODate("2018-01-02T07:06:36.612Z"),
    "create_at" : ISODate("2017-11-30T05:17:15.541Z"),
}

错误:

var user = User.queryBySomeThing() // 设这里查询的 结果就是上面数据
user.name = 'jyjin'  //此时给user加个name属性 发现加不上
console.log(user)    // 没有user属性 修改对象失败

正确:

var user = User.queryBySomeThing()
user = JSON.parse(JSON.stringify(user)) // 关键
user.name = 'jyjin'
console.log(user)  //修改对象成功

猜你喜欢

转载自blog.csdn.net/jianleking/article/details/80277438