求助.mongoose 如何一次性存储一组JSONArray对象了
发布网友
发布时间:2022-04-09 22:44
我来回答
共1个回答
热心网友
时间:2022-04-10 00:13
这里的Mongoose当然不是图片上的萌物,它是一个MongoDB对象建模工具(object modeling tool),以前在sails上用的Waterline是ORM (Object Relational Mapper)。当使用Mongoose时,我们不在需要在数据库中创建好结构(Schema)之后,再与后端代码中创建的对象或类进行映射这样繁琐的操作。在Mongoose的封装下,我们只需定义好JSON类型的数据结构即可。当然我没有在Nodejs直接使用过MongoDB,不过想想一定也是很麻烦的。
Mongoose的优点还有很多,我比较笼统地说一下。它实用性在于与数据库的交互是一种结构化以及可重复的方式,有助于进行一些很普遍的数据库任务,也减少了嵌套回调的复杂性。还有的是它不像MongoDB直接返回一个JSON的字符串,而是返回JSON对象。当然,目前Mongoose对于Schema-less data、Random documents、Pure Key-Value pairs是无解的。
1.1 connection
第一步当然是连接数据库了。如图,连接数据库的配置文大致分为三步。
第一步是进行连接,连接字符串 mongodb://<db_user>:<db_password>@<hostname>:<port>/<dbname>中间必须填写的部分为server和hostname,我们可以使用两种方法来打开数据库连接(mongoose.connect和createConnection):我一般就使用mongoose.connect(db);,当我们需要使用多数据库连接时,我们就需要使用第二种方法了 var connectName = mongoose.createConnection(db#);第二步就是输出运行日志信息,在成功连接、断开连接或者报错时,监听相应的事件并在console输出运行信息;第三步是断开连接,一般的最佳实践是在程序运行时就打开连接,而程序停止或重启时就需要手动断开数据库连接。
1.2 Schema Model
Schema是一个文档的数据结构,正如我前面提到的,它在Mongoose是一个JSON对象。它最大的特点就是无需确定字段的大小,这特别适用于需要改变对象大小的情况。
它支持8种数据类型(String、Number、Date、Boolean和Buffer、ObjectId、Mixed、ObjectId、Mixed、Array)。Buffer是用来存储2进制数据,ObjectId是不同于_id的特定的识别符。Mixed可以指定任意类型,不过Mongoose不会自动识别。Array用来存放基本数据类型,也可以是子文档。