gpt4 book ai didi

node.js - Mongoose insertMany().exec() 返回 TypeError

转载 作者:IT老高 更新时间:2023-10-28 13:37:35 31 4
gpt4 key购买 nike

以下函数由 async/await 函数调用,因此我需要从 Mongoose 返回一个真正的 Promise,因此根据 documentation 使用“.exec()”和 this SO thread .

// where data is an array of documents
function insertNewResults(data) {
return Model.insertMany(data).exec();
}

这样做会给我以下错误:

TypeError: Model.insertMany(...).exec is not a function at insertNewResults

如果我删除 exec(),我可以毫无问题地插入许多。我使用 exec() 的其他查询似乎没有抛出任何错误,这使得它更加令人困惑。

有人可以解释为什么会这样吗?

编辑 1:下面是我的架构代码

const mongoose = require('mongoose');

const schema = new mongoose.Schema({
date: { type: Date, required: true },
price: { type: Number, required: true },
result: { type: String, required: true }
}, { usePushEach: true });

schema.index(
{ date: -1 }
);
mongoose.model('Model', schema);

最佳答案

正如引用资料中所述,返回查询的方法可能需要 exec(),因为 queries are not promises .该引用文献还列出了 methods that return queries :

Model.deleteMany()
Model.deleteOne()
Model.find()
Model.findById()
Model.findByIdAndDelete()
Model.findByIdAndRemove()
Model.findByIdAndUpdate()
Model.findOne()
Model.findOneAndDelete()
Model.findOneAndRemove()
Model.findOneAndUpdate()
Model.replaceOne()
Model.updateMany()
Model.updateOne()

insertMany 不是其中之一,it returns a promise right away .

应该是:

function insertNewResults(data) {
return Model.insertMany(data);
}

关于node.js - Mongoose insertMany().exec() 返回 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51454009/

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