如何在 Javascript 中使用 Mongoose 建立 ID?
在本教程中,我們將學習如何在 JavaScript 中使用 Mongoose 建立 ID。使用者可以在 NodeJS 中使用 Mongoose NPM 包來將 MongoDB 與 NodeJS 一起使用,或將 MongoDB 連線到應用程式。
在將資料儲存到 MongoDB 資料庫時,我們必須為每個資料集合新增一個唯一的 ID。但是,如果我們不新增 ID,它會自動生成並新增到資料中。
語法
使用者可以按照以下語法在 JavaScript 中使用 Mongoose 建立 ID。
var newId = new mongoose.mongo.ObjectId();
在上面的語法中,我們從 Mongoose 訪問 'mongo' 並呼叫 'ObjectId()' 方法來生成一個新的 ID。
示例 1
在下面的示例中,我們已將 MongoDB 與 NodeJS 連線。但是,使用者需要更改其帳戶詳細資訊。之後,我們建立了 Mongoose 模式。使用該模式,我們建立了 Mongoose 模型。
data 物件包含要儲存到 MongoDB 資料庫中的資料。之後,我們使用 save() 方法將資料集合儲存到 MongoDB。如果成功儲存資料,它將列印結果。在輸出中,使用者可以觀察資料的 ID。
我們沒有為資料分配任何 ID,因此它已自動生成了 ID。
const mongoose = require("mongoose"); // Database connection mongoose .connect( "mongodb+srv://shubhamvora05:Stockdata@stockdata.lrlgm.mongodb.net/StockList?retryWrites=true&w=majority", { useNewUrlParser: true, useUnifiedTopology: true } ) .then(() => { console.log("Connected to database"); }) .catch((err) => { console.log("Error connecting to DB", err.message); }); const dataSchema = new mongoose.Schema({ name: String, type: String, }); const dataModel = mongoose.model("dataModel", dataSchema); const data = { name: "Delhi", type: "city", }; var dataDetails = new dataModel(data); dataDetails .save() .then((res) => { console.log(res); }) .catch((err) => { console.log(err); });
輸出
執行後,它將產生以下輸出:
$ node index.js Connected to database { name: 'Delhi', type: 'city', _id: new ObjectId("642b937407844923e4fddee7"), __v: 0 }
示例 2
在下面的示例中,我們使用 'mongo.ObjectId()' 方法為資料生成 ID。之後,我們在控制檯中列印了生成的 ID。接下來,我們透過分配新生成的 ID 來儲存資料。
在輸出中,使用者可以觀察到資料的 ID 與我們生成的 ID 相同。
const mongoose = require("mongoose"); // Database connection mongoose .connect( "mongodb+srv://shubhamvora05:Stockdata@stockdata.lrlgm.mongodb.net/StockList?retryWrites=true&w=majority", { useNewUrlParser: true, useUnifiedTopology: true } ) .then(() => { console.log("Connected to database"); }) .catch((err) => { console.log("Error connecting to DB", err.message); }); const dataSchema = new mongoose.Schema({ name: String, type: String, }); const dataModel = mongoose.model("dataModel", dataSchema); var newId = new mongoose.mongo.ObjectId(); console.log(newId); const data = { _id: newId, name: "Gujarat", type: "state", }; var dataDetails = new dataModel(data); dataDetails .save() .then((res) => { console.log(res); }) .catch((err) => { console.log(err); });
輸出
執行後,它將產生以下輸出:
$ node index.js new ObjectId("642b9796987428b8b945f477") Connected to database { name: 'Gujarat', type: 'state', _id: new ObjectId("642b9796987428b8b945f477"), __v: 0 }
示例 3
在下面的示例中,我們將 12 位元組的字串作為 ObjectId() 方法的引數傳遞。它根據作為引數傳遞的值生成新的 ID。但是,使用者也可以將 24 個十六進位制字元作為引數傳遞。
在輸出中,使用者可以觀察到 24 個十六進位制字元的 ID。
const mongoose = require("mongoose"); // Database connection mongoose .connect( "mongodb+srv://shubhamvora05:Stockdata@stockdata.lrlgm.mongodb.net/StockList?retryWrites=true&w=majority", { useNewUrlParser: true, useUnifiedTopology: true } ) .then(() => { console.log("Connected to database"); }) .catch((err) => { console.log("Error connecting to DB", err.message); }); const dataSchema = new mongoose.Schema({ name: String, type: String, }); const dataModel = mongoose.model("dataModel", dataSchema); var newId = new mongoose.mongo.ObjectId('234556567123'); const data = { _id: newId, name: "Lokesh", type: "name", }; var dataDetails = new dataModel(data); dataDetails .save() .then((res) => { console.log(res); }) .catch((err) => { console.log(err); });
輸出
執行後,它將產生以下輸出:
$ node index.js
Connected to database
{
name: 'Lokesh',
type: 'name',
_id: new ObjectId("323334353536353637313233"),
__v: 0
}
結論
使用者學習瞭如何在 MongoDb 中生成隨機 ID。此外,使用者還學習瞭如何透過將 12 位元組的字串或 24 個十六進位制字元作為 ObjectId() 方法的引數來為 MongoDB 資料生成特定 ID。