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

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

18
เพิ่มเขตข้อมูล created_at และ updated_at ไปยัง schongas พังพอน
มีวิธีเพิ่มเขตข้อมูล create_at และ updated_at ลงใน schong ของ mongoose โดยไม่ต้องผ่านมันในทุกครั้งที่มีการเรียก MyModel () ใหม่? ฟิลด์ created_at จะเป็นวันที่และจะถูกเพิ่มเมื่อสร้างเอกสารเท่านั้น เขตข้อมูล updated_at จะได้รับการอัพเดตพร้อมกับวันที่ใหม่เมื่อใดก็ตามที่บันทึก () ถูกเรียกบนเอกสาร ฉันได้ลองทำสิ่งนี้ในสคีมาแล้ว แต่ฟิลด์ไม่ปรากฏขึ้นเว้นแต่ว่าฉันจะเพิ่มเข้าไป var ItemSchema = new Schema({ name : { type: String, required: true, trim: true } , created_at : { type: Date, required: true, default: Date.now } });

15
mongoError: โครงสร้างถูกทำลาย
ฉันมีเซอร์วิส REST ที่สร้างขึ้นใน node.js พร้อม Restify และ Mongoose และ mongoDB ที่มีคอลเล็กชันที่มีเอกสารขนาดปกติประมาณ 30,000 รายการ ฉันให้บริการโหนดของฉันทำงานผ่าน pmx และ pm2 เมื่อวานทันใดนั้นโหนดก็เริ่มโวยวายข้อผิดพลาดด้วยข้อความ "MongoError: โทโพโลยีถูกทำลาย" ไม่มีอะไรเพิ่มเติม ฉันไม่รู้ว่าสิ่งนี้มีความหมายอย่างไรและสิ่งใดที่ทำให้เกิดสิ่งนี้ได้ นอกจากนี้ยังมีไม่มากที่จะพบเมื่อค้นหา google นี้ ดังนั้นฉันคิดว่าฉันถามที่นี่ หลังจากรีสตาร์ทบริการโหนดวันนี้ข้อผิดพลาดก็หยุดลงฉันยังมีหนึ่งในผู้ที่ทำงานอยู่ในการผลิตและมันทำให้ฉันกลัวว่าสิ่งนี้อาจเกิดขึ้นได้ตลอดเวลาเพื่อเป็นส่วนสำคัญของการตั้งค่าที่ทำงานอยู่ที่นั่น ... ฉันใช้แพ็คเกจที่กล่าวถึงดังต่อไปนี้: พังพอน: 4.0.3 ปรับเปลี่ยน: 3.0.3 โหนด: 0.10.25


7
ความแตกต่างระหว่าง MongoDB และ Mongoose
ฉันต้องการใช้ฐานข้อมูล mongodb แต่ฉันสังเกตเห็นว่ามีสองฐานข้อมูลที่แตกต่างกันกับเว็บไซต์และวิธีการติดตั้งของตัวเอง: mongodb และ mongoose ดังนั้นฉันจึงถามตัวเองด้วยคำถามนี้: "ฉันใช้อันไหนดี?" ดังนั้นเพื่อตอบคำถามนี้ฉันถามชุมชนว่าคุณสามารถอธิบายความแตกต่างระหว่างสองสิ่งนี้ได้อย่างไร และถ้าเป็นไปได้ข้อดีและข้อเสีย? เพราะพวกเขาดูเหมือนฉันมาก

17
วิธีการเรียงลำดับพังพอน?
ฉันไม่พบเอกสารสำหรับตัวดัดแปลงการเรียงลำดับ ข้อมูลเชิงลึกเพียงอย่างเดียวคือในการทดสอบหน่วย: spec.lib.query.js # L12 writer.limit(5).sort(['test', 1]).group('name') แต่มันไม่ได้ผลสำหรับฉัน: Post.find().sort(['updatedAt', 1]);

7
ปิดการเชื่อมต่อของพังพอนอย่างถูกต้องเมื่อเสร็จสิ้น
ฉันใช้พังพอนในสคริปต์ที่ไม่ได้หมายถึงการทำงานอย่างต่อเนื่องและฉันกำลังเผชิญกับสิ่งที่ดูเหมือนจะเป็นปัญหาที่ง่ายมาก แต่ฉันไม่สามารถหาคำตอบได้ เพียงแค่ใส่เมื่อฉันโทรไปที่ฟังก์ชั่นพังพอนใด ๆ ที่ส่งคำขอไปยัง MongoD อินสแตนซ์ของฉัน nodejs ไม่เคยหยุดและฉันต้องฆ่ามันด้วยตนเองด้วยพูด Ctrl + c หรือ Program.exit () โค้ดมีลักษณะดังนี้: var mongoose = require('mongoose'); // if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real …

6
วิธีการเข้าถึงคอลเลกชันที่มีมาก่อนกับพังพอน?
ฉันมีคอลเลกชันขนาดใหญ่ของ 300 วัตถุในฐานข้อมูลquestion testฉันสามารถโต้ตอบกับคอลเลคชันนี้ได้อย่างง่ายดายผ่านเชลล์แบบโต้ตอบของ MongoDB อย่างไรก็ตามเมื่อฉันพยายามรับคอลเลกชันผ่าน Mongoose ในแอปพลิเคชัน express.js ฉันได้รับอาร์เรย์ว่างเปล่า คำถามของฉันคือฉันจะเข้าถึงชุดข้อมูลที่มีอยู่แล้วนี้แทนที่จะสร้างใหม่แบบด่วนได้อย่างไร นี่คือรหัสบางส่วน: var mongoose = require('mongoose'); var Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/test'); mongoose.model('question', new Schema({ url: String, text: String, id: Number })); var questions = mongoose.model('question'); questions.find({}, function(err, data) { console.log(err, data, data.length); }); ผลลัพธ์นี้: null [] 0

6
MongoDB / Mongoose สอบถามข้อมูลในวันที่กำหนด?
เป็นไปได้หรือไม่ที่จะสืบค้นวันที่ที่เฉพาะเจาะจง ฉันพบใน Cookbook mongo ที่เราสามารถทำได้สำหรับช่วงQuerying สำหรับช่วงวันที่ แบบนั้น: db.posts.find({"created_on": {"$gte": start, "$lt": end}}) แต่มันเป็นไปได้สำหรับวันที่ระบุหรือไม่ สิ่งนี้ใช้ไม่ได้: db.posts.find({"created_on": new Date(2012, 7, 14) })

4
ฉันจะสร้าง ObjectId ด้วยพังพอนได้อย่างไร
ฉันต้องการสร้าง MongoDB ObjectIdด้วย Mongoose มีวิธีเข้าถึงตัวObjectIdสร้างจากพังพอนหรือไม่? คำถามนี้เกี่ยวกับการสร้างสิ่งใหม่ ObjectIdตั้งแต่ต้น รหัสที่สร้างขึ้นเป็นรหัสใหม่ที่ไม่ซ้ำกันในระดับสากล อีกคำถามหนึ่งถามเกี่ยวกับการสร้างObjectIdจากการแสดงสตริงที่มีอยู่ ในกรณีนี้คุณมีการแสดง ID เป็นสตริงอยู่แล้วซึ่งอาจเป็นหรือไม่ซ้ำกันในระดับสากลก็ได้และคุณกำลังแยกวิเคราะห์เป็นObjectIdไฟล์.

3
พังพอนทำดัชนีในรหัสการผลิต
ตามเอกสารพังพอนสำหรับMongooseJSและMongoDB/ Node.js: เมื่อแอปพลิเคชันของคุณเริ่มต้นขึ้น Mongoose จะเรียกensureIndexใช้ดัชนีที่กำหนดไว้ในสคีมาของคุณโดยอัตโนมัติ แม้ว่าจะเหมาะสำหรับการพัฒนา แต่ขอแนะนำให้ปิดใช้งานพฤติกรรมนี้ในการผลิตเนื่องจากการสร้างดัชนีอาจทำให้เกิดผลกระทบต่อประสิทธิภาพอย่างมาก ปิดการทำงานโดยตั้งค่าautoIndexตัวเลือกของสคีมาของคุณเป็นเท็จ สิ่งนี้ดูเหมือนจะแนะนำให้ลบการจัดทำดัชนีอัตโนมัติจากพังพอนก่อนที่จะปรับใช้เพื่อเพิ่มประสิทธิภาพ Mongoose จากการสั่งให้ Mongo ไปและปั่นผ่านดัชนีทั้งหมดในการเริ่มต้นแอปพลิเคชันซึ่งดูเหมือนจะสมเหตุสมผล วิธีที่เหมาะสมในการจัดการการจัดทำดัชนีในรหัสการผลิตคืออะไร? บางทีสคริปต์ภายนอกควรสร้างดัชนี? หรืออาจensureIndexไม่จำเป็นหากแอปพลิเคชั่นเดียวเป็นผู้อ่าน / เขียนเพียงคนเดียวในคอลเลคชันเนื่องจากจะดำเนินการต่อดัชนีทุกครั้งที่มีการเขียน DB แก้ไข:เพื่อเสริม MongoDB มีเอกสารที่ดีสำหรับวิธีการจัดทำดัชนี แต่ไม่ควรทำทำไมหรือเมื่อใดจึงควรทำคำสั่งการจัดทำดัชนีอย่างชัดเจน สำหรับฉันแล้วดูเหมือนว่าดัชนีควรได้รับการอัปเดตโดยแอปพลิเคชันนักเขียนโดยอัตโนมัติในคอลเลกชันที่มีดัชนีที่มีอยู่และนั่นensureIndexเป็นสิ่งที่ทำได้เพียงครั้งเดียว (ทำเมื่อมีการใช้ดัชนีใหม่) ซึ่งในกรณีนี้ Mongoose autoIndexควรเป็น no-op ภายใต้การรีสตาร์ทเซิร์ฟเวอร์ปกติ

5
พังพอนและฐานข้อมูลจำนวนมากในโครงการ node.js เดียว
ฉันกำลังทำโปรเจ็กต์ Node.js ที่มีโปรเจ็กต์ย่อย โครงการย่อยหนึ่งโครงการจะมีฐานข้อมูล Mongodb หนึ่งฐานข้อมูลและ Mongoose จะใช้สำหรับการตัดและการสืบค้นฐานข้อมูล แต่ปัญหาคือ พังพอนไม่อนุญาตให้ใช้หลายฐานข้อมูลในอินสแตนซ์พังพอนเดียวเนื่องจากแบบจำลองสร้างจากการเชื่อมต่อเดียว ในการใช้อินสแตนซ์พังพอนหลาย Node.js require()ไม่อนุญาตให้อินสแตนซ์โมดูลหลายอย่างที่มันมีระบบแคชใน ฉันรู้ว่าปิดการใช้งานการแคชโมดูลใน Node.js แต่ฉันคิดว่ามันไม่ใช่ทางออกที่ดีเพราะมันจำเป็นสำหรับพังพอนเท่านั้น ฉันพยายามใช้createConnection()และopenSet()พังพอน แต่มันไม่ใช่วิธีแก้ปัญหา ผมได้พยายามที่จะคัดลอกลึกเช่นพังพอน ( http://blog.imaginea.com/deep-copy-in-javascript/ ) จะผ่านอินสแตนซ์พังพอนใหม่กับโครงการย่อย RangeError: Maximum call stack size exceededแต่ก็ขว้างปา ฉันต้องการทราบว่ามีวิธีใดบ้างที่จะใช้ฐานข้อมูลหลายฐานข้อมูลกับพังพอนหรือวิธีแก้ปัญหาใด ๆ สำหรับปัญหานี้ เพราะฉันคิดว่าพังพอนค่อนข้างง่ายและรวดเร็ว หรือโมดูลอื่น ๆ ตามคำแนะนำ?

6
เอกสารย่อยพังพอนเทียบกับสคีมาที่ซ้อนกัน
ฉันอยากรู้ข้อดีข้อเสียของการใช้เอกสารย่อยเทียบกับเลเยอร์ที่ลึกกว่าในสคีมาหลักของฉัน: var subDoc = new Schema({ name: String }); var mainDoc = new Schema({ names: [subDoc] }); หรือ var mainDoc = new Schema({ names: [{ name: String }] }); ขณะนี้ฉันใช้เอกสารย่อยทุกที่ แต่ฉันสงสัยเกี่ยวกับประสิทธิภาพหรือปัญหาการสืบค้นที่ฉันอาจพบเป็นหลัก

21
ข้อผิดพลาดของพังพอน Cast to ObjectId ล้มเหลวสำหรับค่า XXX ที่พา ธ “ _id” คืออะไร
เมื่อส่งคำขอไป/customers/41224d776a326fb40f000001และเอกสารที่มี_id 41224d776a326fb40f000001ไม่ได้อยู่docเป็นnullและฉันกลับ404: Controller.prototype.show = function(id, res) { this.model.findById(id, function(err, doc) { if (err) { throw err; } if (!doc) { res.send(404); } return res.send(doc); }); }; อย่างไรก็ตามเมื่อ_idใดที่ไม่ตรงกับสิ่งที่ Mongoose คาดหวังว่าเป็น "รูปแบบ" (ฉันคิดว่า) เช่นมีGET /customers/fooข้อผิดพลาดแปลก ๆ จะส่งคืน: CastError: Cast to ObjectId ล้มเหลวสำหรับค่า "foo" ที่พา ธ "_id" แล้วข้อผิดพลาดนี้คืออะไร?
122 mongodb  mongoose 

7
พังพอนเลือกช่องเฉพาะด้วยการค้นหา
ฉันพยายามเลือกเฉพาะฟิลด์ที่เฉพาะเจาะจงด้วย exports.someValue = function(req, res, next) { //query with mongoose var query = dbSchemas.SomeValue.find({}).select('name'); query.exec(function (err, someValue) { if (err) return next(err); res.send(someValue); }); }; แต่ในการตอบกลับ json ของฉันฉันได้รับ _id สคีมาเอกสารของฉันมีเพียงสอง fiels _id และชื่อ [{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}] ทำไม???

9
พังพอน - ชื่อคอลเลกชันบังคับ
ฉันพยายามใช้พังพอนเพื่อสร้างฐานข้อมูลและคอลเล็กชันในนั้น รหัสของฉันคือ: var mongoose = require('mongoose'); var db = mongoose.connect('mongodb://localhost/testdb'); var Schema = mongoose.Schema; var UserInfo = new Schema({ username : String, password : String }); mongoose.model('UserInfo', UserInfo); var user = db.model('UserInfo'); var admin = new user(); admin.username = "sss"; admin.password = "ee"; admin.save(); เมื่อฉันรันโค้ดนี้พังพอนสร้างคอลเล็กชันชื่อ UserInfo แทน userinfo วิธีการบังคับชื่อคอลเลกชันในพังพอน?
120 mongodb  mongoose 

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