insertMany不是函数

时间:2016-11-30 10:55:05

标签: javascript node.js mongodb mongoose

对于我的项目,我正在建立一个系统,让用户可以创建和配置自己的足球锦标赛。比赛结束后,我必须将poules和团队放入mongo的锦标赛文件中。我一直收到以下错误:

TypeError: toernooi.insertMany is not a function
    at C:\xampp\htdocs\nodeprojects\contactlistapp\server.js:254:13
    at Query.<anonymous> (C:\xampp\htdocs\nodeprojects\contactlistapp\node_modules\mongoose\lib\model.js:3398:16)
    at C:\xampp\htdocs\nodeprojects\contactlistapp\node_modules\kareem\index.js:259:21
    at C:\xampp\htdocs\nodeprojects\contactlistapp\node_modules\kareem\index.js:127:16
    at nextTickCallbackWith0Args (node.js:420:9)
    at process._tickCallback (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

1 个答案:

答案 0 :(得分:2)

在您提供的示例中,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无效。这里是一个数组。