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模型。
数据对象包含要保存到MongoDB数据库中的数据。之后,我们使用save()方法将一组数据保存到MongoDB中。如果成功保存数据,它将打印结果。在输出中,用户可以观察到数据的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。