gpt4 book ai didi

mongodb - TypeError : utils. 填充 : invalid path. 预期的字符串。得到类型 `undefined`

转载 作者:行者123 更新时间:2023-12-05 08:40:49 31 4
gpt4 key购买 nike

我正在尝试使用populate operator Mongoose 合并产品及其用户/所有者。

我制作了产品模式的“导出”模型,指定所有字段,如下所示:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const someSchema= new Schema({
something1: String,
customers: [{ type: Schema.Types.ObjectId, ref: "customers" }],
price: Number,
...
})
module.exports = mongoose.model("products", someSchema, "products");

我已经设法从产品中的用户/所有者那里保存了 _id,它在 MongoDB 中显示为橙色 "ObjectId('...')"罗盘和这个相同的 ID 与“客户”集合中的用户匹配(手动查找)。

但是当我在另一个模块中运行搜索时:

  const model = require("../../models/productModel");
model
.populate("customers")
.find({ < some fields> })
.then( ... )
.catch( ... )

它在控制台中抛出以下错误:

TypeError: utils.populate: invalid path. Expected string. Got typeof `undefined`

我是不是漏掉了什么?我尝试了将近一个小时,但一无所获。对不起,如果我错过了一些重要的事情,我有点累了。

非常感谢任何帮助。

最佳答案

我想通了。

问题是我以错误的顺序调用了 populate

我在打电话:

  model
.populate("customers")
.find({ < some fields> })
.then( ... )
.catch( ... )

但它必须是这样的顺序:

  model
.find({ < some fields> })
.populate("customers")
.then( ... )
.catch( ... )

因为我们必须先找到文档才能填充它们,否则就没有任何意义。

此外,为了将来引用,如果您只指定 .populate("customers"),它不会神奇地填充所有 ID 字段,您还必须指定哪个字段。你这样做:

.populate({ path: "key_to_fill", model: "customers" })

现在它会将 key_to_fill 替换为在 customers 中找到的文档。

您可以在此处找到其他参数和选项:https://mongoosejs.com/docs/populate.html (官方文档)

关于mongodb - TypeError : utils. 填充 : invalid path. 预期的字符串。得到类型 `undefined`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53178082/

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