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) //修改对象成功