我在 MongoDB 中有一個包含兩個集合的資料庫:用戶和聯系人。在我的專案中,我有兩個模型:用戶和聯系人。每個用戶都有一個包含他的聯系人的陣列,每個聯系人都有一個屬性所有者,該所有者存盤包含該聯系人的用戶的 ID。這些是我的模型:
export const contactSchema = new Schema({
phoneNumber: {
type: String,
required: true,
},
owner: {
type: Schema.Types.ObjectId,
ref: "User",
},
});
const Contact = model("Contact", contactSchema, "contacts");
const userSchema = new Schema({
phoneNumber: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
contacts: [{ type: Schema.Types.ObjectId, ref: "Contact" }],
});
const User = model("User", userSchema, "users");
export default User;
現在,我正在嘗試創建一個函式來接收請求、回應和下一個函式,并在回應中回傳一個陣列,其中包含用戶 ID 為“631791f8d7342693105b6908”的所有聯系人:
import { NextFunction, Request, Response } from "express";
import Contact from "../../../database/models/Contact/Contact";
const getContacts = async (req: Request, res: Response, next: NextFunction) => {
const contacts = await Contact.findOne({
_id: "631791f8d7342693105b6908",
}).populate("owner");
res.status(200).json({ contacts });
};
export default getContacts;
在我的 mongoDB 中,我有一個包含具有該 ID 的所有者的聯系人,但是當我發出請求時,回應是:
{
"contacts": null
}
我如何才能在回應中獲取之前提供的 id 作為所有者的聯系人?
如果有人可以幫助我,我將不勝感激。謝謝!
uj5u.com熱心網友回復:
這null表明查詢根本不產生任何結果(與 無關.populate())。
根據您的描述,您想要搜索所有者與特定 ID 匹配的聯系人,因此查詢應該是:
const contacts = await Contact.findOne({
owner: "631791f8d7342693105b6908",
}).populate("owner");
正如您在評論中所說,.find()如果您想查找屬于特定所有者的所有聯系人,請使用。
uj5u.com熱心網友回復:
try this
const contacts = await Contact.findOne({
owner: new ObjectId("631791f8d7342693105b6908"),
}).populate("owner");
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/505661.html
