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");
                }
            });

      });

このコードを使用して、ウィキペディアから取得したコンテンツをコレクションに追加しようとしていますtry1「正常に追加されました」というメッセージが表示されます。しかし、コレクションは空のようです。データはデータベースに挿入されません

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

-挿入メソッドのコールバックには 2 つのパラメーターがあります。エラーがあった場合のエラー、および結果。結果オブジェクトには、次のような挿入結果のテスト後に使用できるいくつかのプロパティがあります。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 に答える