Mongoose 使用save()方法更新文档
mongoose模型的一个重要方面是在对其进行更改时显式保存文档。这是通过使用save()方法来实现的。在本文中,我们将看到它的用途,并了解在保存文档时应注意的事项。
我们将借助一个示例来理解save()方法的操作。
步骤1:创建一个模型:
在VS Code中打开一个空文件夹,并创建一个名为app.js的文件。现在,在终端中写入以下命令,将此文件夹初始化为NodeJS项目。
现在,将以下命令写入以从NPM仓库下载MongoDB和mongoose包。
现在,我们需要做的下一件事是将 mongoose 库导入到我们的文件中,并将其分配给一个常量,并在该常量上调用 connect 方法来连接到MongoDB数据库。我们是连接到一个本地数据库,您也可以连接到云数据库,但它必须是MongoDB数据库。将URL字符串准确地传递给 connect 方法(用于本地数据库),您可以根据自己的喜好更改数据库的名称。
在mongoose中,首先需要创建一个蓝图,从该蓝图创建集合(或模型)和它们的文档。该蓝图被称为 schema 。我们调用 Schema 方法并传递一个对象,其中键是我们希望在每个文档上拥有的字段,它们各自的值是这些键的数据类型。我们也将其分配给一个常量。
接下来,我们在 mongoose 对象上调用model方法,并传递一个字符串,该字符串是我们集合的名称,以及保存schema的常量。字符串中定义的名称必须是标题大小写和单数形式,mongoose将自动将其转换为小写和复数形式。这将在我们的heroesDB数据库上创建一个模型/集合。尽管目前它是空的,因为我们还没有为其创建任何文档。
步骤2:创建一些文档:
上述模型方法给我们提供了一个类,我们可以从中创建对象,这些对象将被作为我们使用的类所代表的集合的文档化。我们使用下面所示的语法从中创建两个对象。然后对每个对象调用 save() 方法,以使其实际创建并存储在 heroes 集合中,
在写完上述代码后,在终端中运行以下命令,以运行您的应用程序并查看更改的发生。
现在,打开 Studio 3T 或您正在使用的 DB viewer,并转到 heroesDB 数据库,在其下面,打开 collections,然后双击 heros 集合查看它。现在您可以看到创建的两个文档。右键单击第一个文档,选择 查看文档 ,然后复制其 _id。
步骤3:用新数据更新文档:
在上述步骤中复制的_id
将在这里使用。在 Hero 类上调用 findById() 方法,将复制的_id
作为参数传递给它。这将返回一个promise,因此我们在其上调用 then() 方法,在其内部有我们的hero对象。访问你想要改变的该对象的属性,将它们赋值为新的值,并确保使用相同的数据类型。完成后,在该对象上调用 save() 方法。在运行应用程序之前,注释掉创建新文档的代码,否则会导致重复创建文档。
现在运行以下命令来运行应用程序:
右键单击 英雄 收藏夹,然后选择刷新。现在,如果你双击打开这个收藏夹,你会看到属性已经被更改。
需要记住的事项: 请记住, save() 方法返回一个promise。因此,如果在保存更新后的文档之后要执行一些操作,比如在控制台上记录一些内容、创建一个新对象、重定向到一个新的网页等等,确保将这些操作放在链接到 save() 方法的 then() 块中,以保证按顺序执行需要按顺序发生的事情。
完整代码:
输出:
参考: https://mongoosejs.com/docs/documents.html#updating-using-save