Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript insertMany不是一个函数_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript insertMany不是一个函数

Javascript insertMany不是一个函数,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,对于我的项目,我正在制作一个系统,允许用户创建和配置他们自己的足球比赛。比赛结束后,我必须在mongo的比赛文档中加入poules和球队。我不断得到以下错误: TypeError:toernooi.insertMany不是函数 在C:\xampp\htdocs\nodeprojects\contactlistapp\server.js:254:13 在询问时。(C:\xampp\htdocs\nodeprojects\contactlistapp\node\u modules\mongoose\

对于我的项目,我正在制作一个系统,允许用户创建和配置他们自己的足球比赛。比赛结束后,我必须在mongo的比赛文档中加入poules和球队。我不断得到以下错误:

TypeError:toernooi.insertMany不是函数
在C:\xampp\htdocs\nodeprojects\contactlistapp\server.js:254:13
在询问时。(C:\xampp\htdocs\nodeprojects\contactlistapp\node\u modules\mongoose\lib\model.js:3398:16)
在C:\xampp\htdocs\nodeprojects\contactlistapp\node\u modules\kareem\index.js:259:21
在C:\xampp\htdocs\nodeprojects\contactlistapp\node\u modules\kareem\index.js:127:16
在下一个TTickCallbackwith0args(node.js:420:9)
在进程中调用(node.js:349:13)
我正在尝试使用以下代码将数组插入mongodb中的现有文档:

app.put('/poules/:id', function(req,res){
//Select Toernooi object in DB by ID
Toernooi.findById(req.params.id, function(err, toernooi){
    if(err)
        res.send(err);

    toernooi.poules = {
        poule : {
            team: { teamnaam: 'psv', pt: '0', dptplus: '0', dptminus: '0' },
            team: { teamnaam: 'ajax', pt: '0', dptplus: '0', dptminus: '0' },
            team: { teamnaam: 'feyenoord', pt: '0', dptplus: '0', dptminus: '0'  },
            team: { teamnaam: 'ado', pt: '0', dptplus: '0', dptminus: '0' }
        },
        poule : {
            team: { teamnaam: 'vitesse', pt: '0', dptplus: '0', dptminus: '0' },
            team: { teamnaam: 'achilles', pt: '0', dptplus: '0', dptminus: '0' },
            team: { teamnaam: 'jvc', pt: '0', dptplus: '0', dptminus: '0' },
            team: { teamnaam: 'twente', pt: '0', dptplus: '0', dptminus: '0' }
        }
    };              

    toernooi.insertMany(toernooi.poules, function(error, docs));
});
我不知道出了什么问题,因为我是NodeJS和Mongo的新手,我想我可能做了一些非常简单的错误的事情

猫鼬版本:4.7
MongoDB版本:3.2.10

在您给出的示例中,
toernooi
是您顶级查询的结果。结果没有insertMany函数,只有模型
Toernooi

在任何情况下,您在这里所做的都是对文档的简单更新,因此以下内容应该可以工作:

app.put('/poules/:id', function(req,res){

//Select Toernooi object in DB by ID

Toernooi.findById(req.params.id, function(err, toernooi){
    if(err)
        res.send(err);

    toernooi.poules = [
        [
            { teamnaam: 'psv', pt: '0', dptplus: '0', dptminus: '0' },
            { teamnaam: 'ajax', pt: '0', dptplus: '0', dptminus: '0' },
            { teamnaam: 'feyenoord', pt: '0', dptplus: '0', dptminus: '0'  },
            { teamnaam: 'ado', pt: '0', dptplus: '0', dptminus: '0' }
        ],[
            { teamnaam: 'vitesse', pt: '0', dptplus: '0', dptminus: '0' },
            { teamnaam: 'achilles', pt: '0', dptplus: '0', dptminus: '0' },
            { teamnaam: 'jvc', pt: '0', dptplus: '0', dptminus: '0' },
            { teamnaam: 'twente', pt: '0', dptplus: '0', dptminus: '0' }
        ]
    ];              

    toernooi.save(function(err,res){

    });
});

编辑:如注释中所述,您的语法对poules无效。这里它是一个数组。

您的
toernooi.poules
声明的语法无效。对象不能有多个具有相同键的属性。你可能需要数组,为什么不使用poules数组呢?不要那样给它们编号。考虑到以后的查询,锦标赛通常有固定数量的撅嘴,等等。基本上,只是想得太多了!现在好多了:感谢所有的反馈,这段代码确实有效,但是现在我有了一个poules数组,在mongo中有一个对象,只有一个ID,它不显示团队或poules。我想我误解了一些东西检查你的模型,确保它反映了你想要对你的结构所做的改变。“数组数组”可能不是最好的设计,但至少现在您知道如何
.save()
您的更改:)