Javascript mongoose与mongodb(nodejs模块/扩展),哪个更好?为什么?
我刚到Node.js,看到MongoDB有很多lib可以使用,最流行的似乎是这两个:(mongoose和MongoDB)。我能得到这些扩展的优点和缺点吗?除了这两个,还有更好的选择吗 编辑:发现了一个新的库,它看起来也很有趣,是“Mongon DeadBeef是一个很棒的Mongo DB node.js驱动程序,它试图接近mongodb shell。”(readme.md)Javascript mongoose与mongodb(nodejs模块/扩展),哪个更好?为什么?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我刚到Node.js,看到MongoDB有很多lib可以使用,最流行的似乎是这两个:(mongoose和MongoDB)。我能得到这些扩展的优点和缺点吗?除了这两个,还有更好的选择吗 编辑:发现了一个新的库,它看起来也很有趣,是“Mongon DeadBeef是一个很棒的Mongo DB node.js驱动程序,它试图接近mongodb shell。”(readme.md) 这只是为了增加更多的资源给那些有这种观点的人,所以基本上蒙古语就像是ODM…到目前为止,猫鼬是最受欢迎的。我用过,没有用
这只是为了增加更多的资源给那些有这种观点的人,所以基本上蒙古语就像是ODM…到目前为止,猫鼬是最受欢迎的。我用过,没有用过别人。所以我不能谈论其他人,但我可以告诉你我对猫鼬的抱怨
- 记录困难/不良
- 都用过了。它们定义了文档的结构。然而,这对于Mongo来说似乎有些奇怪,它的优点之一是可以插入一列(呃,属性?),或者干脆不添加一列
- 模型是区分大小写的-我自己和其他与我一起工作的开发人员遇到过这样的问题:定义模型时使用的集合名称的大小写可能会导致它不保存任何内容,而不存在错误。我们发现使用所有小写名称效果最好。例如,与其做类似于
的事情,不如做(即使集合名称实际上是mongooseinnstace.model('MyCollection',{“\u id”:Number,“xyz”:String})
):MyCollection
mongooseinnstace.model('MyCollection',{“\u id”:Number,“xyz”:String})
但老实说,它真的很有用。最大的问题是文档。它就在那里,但是很干燥,很难找到你需要的东西。它可以使用更好的解释和更多的例子。但是,一旦你克服了这些问题,它就会非常好地工作。Mongoose是更高级别的,并且使用MongoDB驱动程序(这是一个依赖项,请检查package.json),因此在给定这些选项的情况下,你将以任何一种方式使用它。您应该问自己的问题是,“我是想使用原始驱动程序,还是需要一个对象文档建模工具?”如果您正在寻找一个对象建模(ODM,与SQL世界中的ORMs相对应的)工具来跳过一些较低级别的工作,那么您需要Mongoose
如果您想要一个驱动程序,因为您想要打破ODM可能强制执行的许多规则,那么可以使用MongoDB。如果您想要一个快速的驱动程序,并且可以使用一些缺少的功能,请尝试一下:我只使用过mongodb。在我个人看来,我建议从低水平开始,然后再向上提升。否则,您可能会发现自己使用了更高级别的驱动程序(如mongoose)提供的其他高级功能,而没有实际的好处 mongodb是node.js特有的,我遇到的问题是文档质量差。有很多文档,但它并不总是最有用的。到目前为止,我还没有看到关于驱动程序的生产使用的好的和彻底的例子。文档中充满了打开连接、发出命令和关闭连接的相同模板示例。您可以从模板中看出它是复制和粘贴的,因为每个示例都包含可能需要的所有内容,而不仅仅是每个示例需要的内容 举一个完全随机的例子:
- 原始{Boolean,默认值:false},使用原始bson缓冲区执行操作
文件很仓促。它没有解释事件,提供了关于何时抛出错误或这些错误的性质的模糊细节,并且通常有几种实现连接的方法,这些方法可能不清楚。你可以过得去,它并不是完全没用,但它的边缘非常粗糙。你会发现有些事情有待猜测和实验。我正在构建新的应用程序,并正在设计它的结构,以下是关于为什么使用或不使用mongoose的一些想法: