単体テストを作成するときに、テストデータベースを削除して初期化データを挿入し、テスト中にmongodbのデータを確認するため、これを求めています。だから私はmongodbに生の操作が必要です。
マングースでこれを行う方法は?今できることは、接続を作成するだけで、mongooseの公式サイトでドキュメントを見つけることはできません。
var mongoose = require('mongoose');
mongoose.connect('mongo://localhost/shuzu_test');
// get the connection
var conn = mongoose.connection;
しかし、どのように:
ドキュメントの「ドライバーアクセス」のセクションを参照してください。 http://mongoosejs.com/
基本的に、YourModel.collection
を実行することで node-mongodb-native ドライバーにアクセスでき、insert
またはremove
またはdrop
または何でもできます。あなたが必要です。
ドキュメントはありませんが、このアプローチを使用すると、ここのすべてにアクセスできます: https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js
編集:
あなたの場合、テストスイートでmongooseの使用をスキップして、 node-mongodb-native を直接使用するか、実行可能な単純な mongodb Shell script を書くこともできますテスト開始前。
mongoose.connection.db
を使用して、ネイティブmongodbコマンドを実行できます。これはネイティブMongoDBドライバーにアクセスし、モデルを作成する必要はありません。
mongoose.connection.db.collection('userCollection').insert({
username: 'captain1',
firstName: 'Steve',
lastName: 'Rogers',
});
mongoose.connection.db.collection('userCollection').update(
{someFilterProperty: true},
{$set: {
siteId: new mongoose.mongo.ObjectId('56cb91bdc5946f14678934ba'),
hasNewSiteId: true}},
{multi: true});
});
データベース接続データベース参照mongoose.connection.db
を使用して、そのデータベースに固有のすべてのコマンドを送信できます。
これはmongoose APIドキュメントです: http://mongoosejs.com/docs/api.html#connection_Connection-db
これを使用して、mongooseでraw操作を実行します。
Model_name.collection.insertMany(array, { ordered: false },function(err, success){
console.log(success);
});
テスト後にDBをクリーンアップするために同じトラブルが発生し、実際の回答は「コードブロック」がないため混乱しているため、Dig docs/codeをもう一度、他の時間節約のためにこれを投稿します;)
MongooseコレクションはMongodbコレクションを拡張します
/ * *セクションcollection.js * http://mongoosejs.com/docs/api.html#collection-js * /
インターフェースCollectionBaseはmongodb.Collectionを拡張します{
ドキュメント: http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html
接続についても同じことが言えます。
Require( 'mongoose')によって公開されるConnectionクラスは、実際にはドライバーのNativeConnectionクラスです。 connection.jsは、ネイティブバージョンが拡張する基本クラスを定義します。参照: http://mongoosejs.com/docs/api.html#drivers-node-mongodb-native-connection-js
したがって、すべての「RAW」操作は、収集/接続に対して実行できます。
var connection = mongoose.connection;
その後:
1。データベースをドロップします:
connection.dropDatabase()
2。コレクションを作成する
connection.collection('newcollection') // creates if not exists
3。コレクションにいくつかのデータを書き込む
connection.collection('mybenotnewcollection').bulkWrite([
{ insertOne: { whatewer: { you: 'need' } } },
]);
4。コレクションのクエリ
それは明らかに質問ではありません:findAll、find、aggregate、all allowed( Docs を参照)
5。コレクションをドロップ
connection.collection('notsonewcollection').drop()