gpt4 book ai didi

node.js - Mongoose 模式中的嵌套对象

转载 作者:IT老高 更新时间:2023-10-28 13:06:04 25 4
gpt4 key购买 nike

我在这里看到了很多关于这个问题的答案,但我仍然不明白(可能是因为他们使用了更“复杂”的例子)......所以我试图做的是一个“客户”的模式,它将有两个嵌套的“子字段”字段,以及其他可能重复的字段。这就是我的意思:

let customerModel = new Schema({
firstName: String,
lastName: String,
company: String,
contactInfo: {
tel: [Number],
email: [String],
address: {
city: String,
street: String,
houseNumber: String
}
}
});

telemail 可能是一个数组。和地址不会重复,但有一些子字段,你可以看到。

我怎样才能做到这一点?

最佳答案

const mongoose = require("mongoose");

// Make connection
// https://mongoosejs.com/docs/connections.html#error-handling
mongoose.connect("mongodb://localhost:27017/test", {
useNewUrlParser: true,
useUnifiedTopology: true,
});

// Define schema
// https://mongoosejs.com/docs/models.html#compiling
const AddressSchema = mongoose.Schema({
city: String,
street: String,
houseNumber: String,
});

const ContactInfoSchema = mongoose.Schema({
tel: [Number],
email: [String],
address: {
type: AddressSchema,
required: true,
},
});

const CustomerSchema = mongoose.Schema({
firstName: String,
lastName: String,
company: String,
connectInfo: ContactInfoSchema,
});

const CustomerModel = mongoose.model("Customer", CustomerSchema);

// Create a record
// https://mongoosejs.com/docs/models.html#constructing-documents
const customer = new CustomerModel({
firstName: "Ashish",
lastName: "Suthar",
company: "BitOrbits",
connectInfo: {
tel: [8154080079, 6354492692],
email: ["asissuthar@gmail.com", "contact.bitorbits@gmail.com"],
},
});

// Insert customer object
// https://mongoosejs.com/docs/api.html#model_Model-save
customer.save((err, cust) => {
if (err) return console.error(err);

// This will print inserted record from database
// console.log(cust);
});

// Display any data from CustomerModel
// https://mongoosejs.com/docs/api.html#model_Model.findOne
CustomerModel.findOne({ firstName: "Ashish" }, (err, cust) => {
if (err) return console.error(err);

// To print stored data
console.log(cust.connectInfo.tel[0]); // output 8154080079
});

// Update inner record
// https://mongoosejs.com/docs/api.html#model_Model.update
CustomerModel.updateOne(
{ firstName: "Ashish" },
{
$set: {
"connectInfo.tel.0": 8154099999,
},
}
);

关于node.js - Mongoose 模式中的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com