タグ付けされた質問 「mongoose」

Mongooseは、JavaScriptで記述され、非同期環境で動作するように設計された、MongoDBオブジェクトモデリングツール、つまりODM(Object Document Mapper)です。


6
NodeJSでのJavaScript OOP:どうやって?
私はJavaのように古典的なOOPに慣れています。 NodeJSを使用してJavaScriptでOOPを実行するためのベストプラクティスは何ですか? 各クラスは、module.export? クラスを作成するには? this.Class = function() { //constructor? var privateField = "" this.publicField = "" var privateMethod = function() {} this.publicMethod = function() {} } 対(それが正しいかどうかさえわかりません) this.Class = { privateField: "" , privateMethod: function() {} , return { publicField: "" publicMethod: function() {} } } 対 this.Class = function() …

5
スキーマを定義せずにMongooseをどのように使用しますか?
以前のバージョンのMongoose(node.js用)には、スキーマを定義せずにそれを使用するオプションがありました var collection = mongoose.noSchema(db, "User"); ただし、現在のバージョンでは、「noSchema」関数は削除されています。私のスキーマは頻繁に変更される可能性が高く、定義されたスキーマに実際には適合しないので、マングースでスキーマのないモデルを使用する新しい方法はありますか?

4
$ or条件付きのMongooseのfindメソッドが正しく機能しない
最近、NodejsでMongooseとMongoDBを使用し始めました。 $or条件と_idフィールドでModel.findメソッドを使用すると、Mongooseが正しく動作しません。 これは動作しません: User.find({ $or: [ { '_id': param }, { 'name': param }, { 'nickname': param } ] }, function(err, docs) { if(!err) res.send(docs); }); ちなみに、 '_ id'の部分を削除すると、これでうまくいきます。 User.find({ $or: [ { 'name': param }, { 'nickname': param } ] }, function(err, docs) { if(!err) res.send(docs); }); そして、MongoDBシェルでは、どちらも正しく動作します。

8
マングース(mongodb)バッチ挿入?
DOES マングースのV3.6 +今のサポートバッチ挿入?私は数分間検索しましたが、このクエリに一致するものはすべて数年前のものであり、答えは明確なノーでした。 編集: 今後の参考のために、答えはを使用することModel.create()です。create()最初の引数として配列を受け入れるため、挿入するドキュメントを配列として渡すことができます。 Model.create()のドキュメントを参照してください


4
2D地理インデックスを使用してMongooseスキーマの配列内のオブジェクトを正しく定義する方法
以下のドキュメントのスキーマを作成する際に問題が発生しています。サーバーからの応答は常に「trk」フィールドの値を[Object]として返します。どういうわけか、私にはこれがどのように機能するかわからない、少なくとも私には理にかなっているすべてのアプローチを試みたので;-) これが役立つ場合、Mongooseのバージョンは3.6.20とMongoDB 2.4.7です。そして、忘れる前に、インデックス(2d)としても設定しておくとよいでしょう。 元のデータ: { "_id": ObjectId("51ec4ac3eb7f7c701b000000"), "gpx": { "metadata": { "desc": "Nürburgring VLN-Variante", "country": "de", "isActive": true }, "trk": [ { "lat": 50.3299594, "lng": 6.9393006 }, { "lat": 50.3295046, "lng": 6.9390688 }, { "lat": 50.3293714, "lng": 6.9389939 }, { "lat": 50.3293284, "lng": 6.9389634 }] } } Mongooseスキーマ: var TrackSchema …

8
JavaScriptで、いくつかの非同期タスクが完了するのを待つ最も簡単な方法は?
mongodbコレクションをいくつか削除したいのですが、それは非同期タスクです。コードは次のようになります。 var mongoose = require('mongoose'); mongoose.connect('mongo://localhost/xxx'); var conn = mongoose.connection; ['aaa','bbb','ccc'].forEach(function(name){ conn.collection(name).drop(function(err) { console.log('dropped'); }); }); console.log('all dropped'); コンソールに次のように表示されます。 all dropped dropped dropped dropped all droppedすべてのコレクションが削除された後に印刷されることを確認する最も簡単な方法は何ですか?サードパーティを使用してコードを簡略化できます。

12
マングースの入れ子になった配列を作成する
サンプルドキュメントに「コンポーネント」を挿入するにはどうすればよいですか。 { "__v": 1, "_id": "5252875356f64d6d28000001", "pages": [ { "__v": 1, "_id": "5252875a56f64d6d28000002", "page": { "components": [ "525287a01877a68528000001" ] } } ], "author": "Book Author", "title": "Book Title" } これは、Mongooseがドキュメントを取得する私のJSです。 Project.findById(id).populate('pages').exec(function(err, project) { res.json(project); });

4
mongoose対mongodb(nodejsモジュール/拡張)、どちらが良いですか?なぜ?
私はNode.jsにたどり着き、MongoDBで使用する多くのライブラリがあることを確認しました。最も人気があるのは、これら2つ(mongooseとmongodb)のようです。これらの拡張機能の長所と短所を取得できますか?これら2つに代わるより良い代替手段はありますか? 編集:node-mongolianにも興味深く、「Mongolian DeadBeefはmongodbシェルを厳密に近似しようとする素晴らしいMongo DB node.jsドライバーです」という新しいライブラリーを見つけました。(readme.md) https://github.com/marcello3d/node-mongolian これは、これを表示する新しい人々にリソースを追加するためだけなので、基本的にモンゴル語はODMのようなものです...

26
Mongooseをコンパイルするとモデルを上書きできません
私が何を間違っているのかわからない、ここに私のcheck.jsがあります var db = mongoose.createConnection('localhost', 'event-db'); db.on('error', console.error.bind(console, 'connection error:')); var a1= db.once('open',function(){ var user = mongoose.model('users',{ name:String, email:String, password:String, phone:Number, _enabled:Boolean }); user.find({},{},function (err, users) { mongoose.connection.close(); console.log("Username supplied"+username); //doSomethingHere }) }); そしてこれが私のinsert.jsです var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/event-db') var user = mongoose.model('users',{ name:String, email:String, password: String, phone:Number, _enabled:Boolean }); …

3
Mongooseで別のスキーマを参照する
次のような2つのスキーマがある場合: var userSchema = new Schema({ twittername: String, twitterID: Number, displayName: String, profilePic: String, }); var User = mongoose.model('User') var postSchema = new Schema({ name: String, postedBy: User, //User Model Type dateCreated: Date, comments: [{body:"string", by: mongoose.Schema.Types.ObjectId}], }); 上記の例のように接続しようとしましたが、どうすればいいのかわかりませんでした。結局、私がこのようなことができるなら、それは私の人生をとても簡単にします var profilePic = Post.postedBy.profilePic

25
サーバー検出および監視エンジンは非推奨です
Node.jsアプリでMongooseを使用していますが、これが私の構成です。 mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false }).then(()=>{ console.log(`connection to database established`) }).catch(err=>{ console.log(`db error ${err.message}`); process.exit(-1) }) しかし、コンソールでは、それでも警告が表示されます。 DeprecationWarning:現在のServer Discovery and Monitoringエンジンは非推奨であり、将来のバージョンで削除される予定です。新しいサーバー検出および監視エンジンを使用するには、オプション{useUnifiedTopology:true}をMongoClientコンストラクターに渡します。 何が問題ですか?useUnifiedTopology以前は使用していませんでしたが、コンソールに表示されるようになりました。設定に追加しましたが、それでもこの警告が表示されます。なぜですか?私も使用していませんMongoClient。 編集 Felipe Pletsが答えたように、Mongooseに問題があり、後のバージョンでこのバグを修正しました。したがって、マングースのバージョンを更新することで問題を解決できます。

6
passport.js passport.initialize()ミドルウェアは使用されていません
私はexpress + mongooseでnodeを使用しており、restful apiでpassport.jsを使用しようとしています。 認証が成功した後もこの例外が発生し続けます(ブラウザーにコールバックURLが表示されます)。 /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/utils.js:419 throw err; ^ Error: passport.initialize() middleware not in use at IncomingMessage.req.login.req.logIn (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/http/request.js:30:30) at Context.module.exports.delegate.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/middleware/authenticate.js:194:13) at Context.actions.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/context/http/actions.js:21:25) at verified (/Users/naorye/dev/naorye/myproj/node_modules/passport-facebook/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:133:18) at Promise.module.exports.passport.use.GitHubStrategy.clientID (/Users/naorye/dev/naorye/myproj/config/passport.js:91:24) at Promise.onResolve (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8) at Promise.EventEmitter.emit (events.js:96:17) at Promise.emit (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38) at Promise.fulfill (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:92:20) at /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/query.js:1822:13 私は前に置くべきことを読んだことがapp.use(passport.initialize());あり、これは私がやったことです。これがミドルウェアを登録する私のexpress.jsです:app.use(passport.session());app.use(app.router); var express = require('express'), mongoStore …

4
mongoDB / mongoose:nullでない場合は一意
一意のコレクションエントリを強制する方法はあるのかと思っていましたが、エントリがnullでない場合のみです。eサンプルスキーマ: var UsersSchema = new Schema({ name : {type: String, trim: true, index: true, required: true}, email : {type: String, trim: true, index: true, unique: true} }); この場合の「email」は必須ではありませんが、「email」が保存されている場合は、このエントリーが(データベースレベルで)一意であることを確認したいと思います。 空のエントリは値「null」を取得するように見えるため、電子メールがないすべてのエントリは「一意」オプションでクラッシュします(電子メールを持たない別のユーザーがいる場合)。 現在、私はアプリケーションレベルでそれを解決していますが、そのdbクエリを保存したいと思います。 どうも

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.