0
router.get('/wiki/:topicname', function(req, res, next) {
    var topicname = req.params.topicname;
    console.log(topicname);




    summary.wikitext(topicname, function(err, result) {
            if (err) {
                return res.send(err);
            }
            if (!result) {
                return res.send('No article found');
            }
            $ = cheerio.load(result);

            var db = req.db;
            var collection = db.get('try1');
            collection.insert({ "topicname" : topicname, "content": result }, function (err, doc){
                if (err) {
                    // If it failed, return error
                    res.send("There was a problem adding the information to the database.");
                }
                else {
                    // And forward to success page
                    res.send("Added succesfully");
                }
            });

      });

使用此代码,我正在尝试将从 Wikipedia 获取的内容添加到 collectiontry1中。显示“添加成功”消息。但收藏似乎是空的。数据未插入数据库

4

2 回答 2

1

数据必须在那里,mongodb 默认有 { w: 1, j: true } 写入关注选项,因此只有在有要插入的文档的情况下真正插入文档时才会返回而不会出错。

你应该考虑的事情:

- 不要使用插入函数,它被贬低使用 insertOne、insertMany 或 bulkWrite。参考: http: //mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insert

- 插入方法回调有两个参数。错误,如果有错误,和结果。结果对象有几个属性,可用于插入结果测试后,例如: result.insertedCount 将返回插入文档的数量。

因此,根据您的代码中的这些,您只测试错误,但您可以插入零个文档而不会出错。

我也不清楚你从哪里得到你的数据库名称。您的代码中的以下内容是否正确?您确定已连接到要使用的数据库吗?

var db = req.db;

此外,您不必在插入方法中用 " 括起您的属性名称。插入应如下所示:

col.insertOne({topicname : topicname, content: result}, function(err, r) {
    if (err){
        console.log(err);
    } else {
        console.log(r.insertedCount);
    }
});
于 2016-03-02T10:34:34.440 回答
0

以正确的路径启动您的 mongod 服务器,即与您用于检查集合内容的路径相同。

sudo mongod --dbpath <actual-path>

于 2016-03-02T10:11:21.110 回答