区块链技术博客
www.b2bchain.cn

Mongoose查询结果无法修改的原因及解决办法求职学习资料

本文介绍了Mongoose查询结果无法修改的原因及解决办法求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

MongoDB作为优秀的NoSQL数据库,已经成为NodeJS服务的标配。Mongoose是一个非常优秀的ORM工具,使用起来非常的简单,节省了开发者的大量时间。然而长久以来,很多人都发现Mongoose查询返回的结果无法被修改。不能增加一个新属性,也不能任意修改属性值的类型。最近我决定花时间研究一下这个问题。

本篇文章分为三个部分:

  • 复现查询结果对象不能修改的问题
  • 列举解决问题的办法
  • 排查问题的原因

1.复现问题

我们举一个例子说明这个问题,这样大家理解起来更加直观。由于我使用的是Eggjs框架,所以以下代码基于Egg框架。先定义一个Model,详情如下:
Mongoose查询结果无法修改的原因及解决办法
然后我们定义一个查询的方法:
Mongoose查询结果无法修改的原因及解决办法
返回结果如下:

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

这时候我们尝试在返回的对象上增加一个属性:color
Mongoose查询结果无法修改的原因及解决办法

返回的对象并没有这个属性!说明不能添加Model中未定义的属性。

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

不能添加新的属性,原有的属性能不能任意修改呢?我们先把原有的属性 name 的值修改为 “test1″。

Mongoose查询结果无法修改的原因及解决办法
结果如下,属性 name 的值按照预期被修改了:

[     {         "name":"test1",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

那已有属性能否被改为其他数据类型吗?我们再做个试验试试。
Mongoose查询结果无法修改的原因及解决办法
结果如下:

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

MongoDB作为优秀的NoSQL数据库,已经成为NodeJS服务的标配。Mongoose是一个非常优秀的ORM工具,使用起来非常的简单,节省了开发者的大量时间。然而长久以来,很多人都发现Mongoose查询返回的结果无法被修改。不能增加一个新属性,也不能任意修改属性值的类型。最近我决定花时间研究一下这个问题。

本篇文章分为三个部分:

  • 复现查询结果对象不能修改的问题
  • 列举解决问题的办法
  • 排查问题的原因

1.复现问题

我们举一个例子说明这个问题,这样大家理解起来更加直观。由于我使用的是Eggjs框架,所以以下代码基于Egg框架。先定义一个Model,详情如下:
Mongoose查询结果无法修改的原因及解决办法
然后我们定义一个查询的方法:
Mongoose查询结果无法修改的原因及解决办法
返回结果如下:

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

这时候我们尝试在返回的对象上增加一个属性:color
Mongoose查询结果无法修改的原因及解决办法

返回的对象并没有这个属性!说明不能添加Model中未定义的属性。

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

不能添加新的属性,原有的属性能不能任意修改呢?我们先把原有的属性 name 的值修改为 “test1″。

Mongoose查询结果无法修改的原因及解决办法
结果如下,属性 name 的值按照预期被修改了:

[     {         "name":"test1",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

那已有属性能否被改为其他数据类型吗?我们再做个试验试试。
Mongoose查询结果无法修改的原因及解决办法
结果如下:

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

MongoDB作为优秀的NoSQL数据库,已经成为NodeJS服务的标配。Mongoose是一个非常优秀的ORM工具,使用起来非常的简单,节省了开发者的大量时间。然而长久以来,很多人都发现Mongoose查询返回的结果无法被修改。不能增加一个新属性,也不能任意修改属性值的类型。最近我决定花时间研究一下这个问题。

本篇文章分为三个部分:

  • 复现查询结果对象不能修改的问题
  • 列举解决问题的办法
  • 排查问题的原因

1.复现问题

我们举一个例子说明这个问题,这样大家理解起来更加直观。由于我使用的是Eggjs框架,所以以下代码基于Egg框架。先定义一个Model,详情如下:
Mongoose查询结果无法修改的原因及解决办法
然后我们定义一个查询的方法:
Mongoose查询结果无法修改的原因及解决办法
返回结果如下:

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

这时候我们尝试在返回的对象上增加一个属性:color
Mongoose查询结果无法修改的原因及解决办法

返回的对象并没有这个属性!说明不能添加Model中未定义的属性。

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

不能添加新的属性,原有的属性能不能任意修改呢?我们先把原有的属性 name 的值修改为 “test1″。

Mongoose查询结果无法修改的原因及解决办法
结果如下,属性 name 的值按照预期被修改了:

[     {         "name":"test1",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

那已有属性能否被改为其他数据类型吗?我们再做个试验试试。
Mongoose查询结果无法修改的原因及解决办法
结果如下:

[     {         "name":"test",         "icon":"test",         "url":"http://baidu.com",         "__v":0     } ]

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Mongoose查询结果无法修改的原因及解决办法求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们