Mongo node mongoose易坑点

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)  //修改对象成功
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值