คำถามติดแท็ก mongoose

Mongoose เป็นเครื่องมือสร้างแบบจำลองวัตถุ MongoDB หรือ ODM (Object Document Mapper) เขียนด้วย JavaScript และออกแบบมาเพื่อทำงานในสภาพแวดล้อมแบบอะซิงโครนัส

8
ทำไมพังพอนจึงใส่ s ต่อท้ายชื่อคอลเลคชันของฉันเสมอ
ตัวอย่างเช่นรหัสนี้ส่งผลให้มีการสร้างคอลเล็กชันที่เรียกว่า "ข้อมูล" var Dataset = mongoose.model('data', dataSchema); และรหัสนี้ส่งผลให้มีการสร้างคอลเล็กชันที่เรียกว่า "ผู้ใช้" var User = mongoose.model('user', dataSchema); ขอบคุณ

6
JavaScript OOP ใน NodeJS: อย่างไร
ฉันคุ้นเคยกับ OOP แบบคลาสสิกเช่นเดียวกับใน Java แนวทางปฏิบัติที่ดีที่สุดในการทำ OOP ใน JavaScript โดยใช้ NodeJS คืออะไร? แต่ละ Class เป็นไฟล์ที่มีmodule.export? จะสร้างชั้นเรียนได้อย่างไร? this.Class = function() { //constructor? var privateField = "" this.publicField = "" var privateMethod = function() {} this.publicMethod = function() {} } เทียบกับ (ฉันไม่แน่ใจว่าถูกต้องด้วยซ้ำ) this.Class = { privateField: "" , privateMethod: function() {} , return …

5
คุณใช้ Mongoose โดยไม่กำหนดสคีมาได้อย่างไร?
ในเวอร์ชันก่อนหน้าของ Mongoose (สำหรับ node.js) มีตัวเลือกให้ใช้โดยไม่ต้องกำหนดสคีมา var collection = mongoose.noSchema(db, "User"); แต่ในเวอร์ชันปัจจุบันฟังก์ชัน "noSchema" ได้ถูกลบออกไป สคีมาของฉันมีแนวโน้มที่จะเปลี่ยนแปลงบ่อยครั้งและไม่เข้ากับสคีมาที่กำหนดไว้ดังนั้นจึงมีวิธีใหม่ในการใช้โมเดลที่ไม่มีสคีมาในพังพอนหรือไม่

4
วิธีการค้นหาของพังพอนด้วย $ หรือเงื่อนไขทำงานไม่ถูกต้อง
เมื่อเร็ว ๆ นี้ฉันเริ่มใช้ MongoDB กับ Mongoose บน Nodejs เมื่อฉันใช้เมธอด Model.find กับ$orเงื่อนไขและ_idฟิลด์พังพอนทำงานไม่ถูกต้อง สิ่งนี้ใช้ไม่ได้: 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 } ] …

8
Mongoose (mongodb) ชุดใส่?
ทำ พังพอน v3.6 +แทรกสนับสนุนชุดตอนนี้หรือไม่ ฉันค้นหามาสองสามนาทีแล้ว แต่สิ่งที่ตรงกับคำค้นหานี้มีอายุสองสามปีและคำตอบคือไม่ชัดเจน แก้ไข: Model.create()สำหรับการอ้างอิงในอนาคตคำตอบคือการใช้งานcreate()ยอมรับอาร์เรย์เป็นอาร์กิวเมนต์แรกดังนั้นคุณสามารถส่งเอกสารของคุณไปแทรกเป็นอาร์เรย์ได้ ดูเอกสาร Model.create ()


4
วิธีกำหนดวัตถุในอาร์เรย์ใน Mongoose schema อย่างถูกต้องด้วยดัชนีภูมิศาสตร์ 2d
ขณะนี้ฉันมีปัญหาในการสร้างสคีมาสำหรับเอกสารด้านล่าง การตอบสนองจากเซิร์ฟเวอร์จะส่งกลับค่าฟิลด์ "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, …

28
ไม่สามารถเขียนทับโมเดลเมื่อรวบรวมพังพอนแล้ว
ไม่แน่ใจว่าฉันทำอะไรผิดนี่คือ 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: …

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" } นี่คือ JS ของฉันที่ฉันได้รับเอกสารจาก Mongoose: Project.findById(id).populate('pages').exec(function(err, project) { res.json(project); });

4
พังพอน vs mongodb (โมดูล nodejs / ส่วนขยาย) อันไหนดีกว่ากัน? และทำไม?
ฉันเพิ่งมาถึง Node.js และเห็นว่ามี libs มากมายที่จะใช้กับ MongoDB ซึ่งสิ่งที่ได้รับความนิยมมากที่สุดคือสองสิ่งนี้: (พังพอนและพังพอน) ฉันสามารถหาข้อดีข้อเสียของส่วนขยายเหล่านั้นได้หรือไม่? มีทางเลือกอื่นที่ดีกว่าสำหรับสองคนนี้หรือไม่? แก้ไข: พบไลบรารีใหม่ที่ดูเหมือนว่า node-mongolian ที่น่าสนใจและ "Mongolian DeadBeef เป็นไดรเวอร์ Mongo DB node.js ที่ยอดเยี่ยมซึ่งพยายามประมาณเปลือก mongodb อย่างใกล้ชิด" (readme.md) https://github.com/marcello3d/node-mongolian นี่เป็นเพียงการเพิ่มทรัพยากรให้กับผู้คนใหม่ ๆ ที่มองเห็นสิ่งนี้ดังนั้นโดยพื้นฐานแล้วชาวมองโกเลียจะเหมือน ODM ...

1
พังพอน findByIdAndUpdate ไม่ส่งคืนโมเดลที่ถูกต้อง
ฉันมีปัญหาที่ฉันไม่เคยเห็นมาก่อนโดยที่พังพอน findByIdAndUpdate ไม่ส่งคืนโมเดลที่ถูกต้องในการติดต่อกลับ นี่คือรหัส: var id = args._id; var updateObj = {updatedDate: Date.now()}; _.extend(updateObj, args); Model.findByIdAndUpdate(id, updateObj, function(err, model) { if (err) { logger.error(modelString +':edit' + modelString +' - ' + err.message); self.emit('item:failure', 'Failed to edit ' + modelString); return; } self.emit('item:success', model); }); เอกสารต้นฉบับใน db มีลักษณะดังนี้: { _id: 1234 …

11
ลบคีย์จากเอกสาร MongoDB โดยใช้ Mongoose
ฉันใช้Mongoose Library เพื่อเข้าถึง MongoDB ด้วย node.js มีวิธีลบคีย์ออกจากเอกสารหรือไม่? กล่าวคือไม่เพียงแค่ตั้งค่าเป็น null แต่ลบออก? User.findOne({}, function(err, user){ //correctly sets the key to null... but it's still present in the document user.key_to_delete = null; // doesn't seem to have any effect delete user.key_to_delete; user.save(); });

7
passport.js passport.initialize () มิดเดิลแวร์ไม่ได้ใช้งาน
ฉันใช้ node กับ express + พังพอนและพยายามใช้ passport.js กับ api ที่สงบ ฉันยังคงได้รับข้อยกเว้นนี้หลังจากการตรวจสอบสิทธิ์สำเร็จ (ฉันเห็น 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 …

3
อ้างถึงสคีมาอื่นในพังพอน
ถ้าฉันมีสองสคีมาเช่น: 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.