Questions tagged «mongoose»

Mongoose是用JavaScript编写的MongoDB对象建模工具或ODM(对象文档映射器),旨在在异步环境中工作。


5
如何在不定义架构的情况下使用Mongoose?
在Mongoose的早期版本(针对node.js)中,可以选择使用它而不定义模式 var collection = mongoose.noSchema(db, "User"); 但是在当前版本中,“ noSchema”功能已被删除。我的模式可能会经常更改,并且实际上不适合已定义的模式,因此,有没有一种新方法可以在猫鼬中使用无模式的模型?

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() …

4
具有$ or条件的猫鼬的find方法无法正常工作
最近,我开始在Node.js上使用MongoDB和Mongoose。 当我将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 } ] }, function(err, docs) { if(!err) res.send(docs); }); 在MongoDB Shell中,两者都可以正常工作。

8
猫鼬(mongodb)批量插入?
的确猫鼬V3.6 +现在支持批量插入?我搜索了几分钟,但与此查询匹配的任何内容都已经存在了两年之久,答案是明确的。 编辑: 供将来参考,答案是使用Model.create()。create()接受数组作为其第一个参数,因此您可以传递要作为数组插入的文档。 请参阅Model.create()文档


4
如何使用2d地理索引在Mongoose模式中正确定义数组中的对象
我目前在为下面的文档创建架构时遇到问题。服务器的响应始终将“ trk”字段值返回为[Object]。不知为什么我不知道这应该如何工作,因为我至少尝试了所有对我有意义的方法;-) 如果有帮助,我的Mongoose版本是3.6.20和MongoDB 2.4.7,在我忘记之前,最好将它设置为Index(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 }] } } 猫鼬架构: var …

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
mongoose vs mongodb(nodejs模块/扩展),哪个更好?为什么?
我刚到达Node.js,发现MongoDB有许多库可以使用,最流行的似乎是这两个库:( mongoose和mongodb)。我可以了解这些扩展的优缺点吗?除了这两个以外,还有其他更好的选择吗? 编辑:找到了一个看起来也很有趣的node-mongolian的新库,并且是“ Mongolian DeadBeef是一个很棒的Mongo DB node.js驱动程序,它试图近似于mongodb shell。” (readme.md) https://github.com/marcello3d/node-mongolian 这只是为查看此内容的新人增加了更多资源,因此基本上蒙古语就像一个ODM ...

26
编译猫鼬后无法覆盖模型
不确定我在做什么错,这是我的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中引用另一个模式
如果我有两个模式,如: 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:不建议使用当前的“服务器发现和监视”引擎,并将在以后的版本中将其删除。要使用新的“服务器发现和监视”引擎,请将选项{useUnifiedTopology:true}传递给MongoClient构造函数。 问题是什么?我以前没有使用useUnifiedTopology过,但是现在它显示在控制台中。我将其添加到配置中,但它仍会给我这个警告,为什么?我什至不使用MongoClient。 编辑 Felipe Plets回答时,猫鼬存在问题,他们在更高版本中修复了该错误。因此,您可以通过更新猫鼬版本来解决问题。

6
Passport.js Passport.initialize()中间件未使用
我正在将节点与express +猫鼬一起使用,并尝试通过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());和app.use(passport.session());前app.use(app.router);,这就是我所做的。这是我的express.js,用于注册中间件: 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',因此每个条目都不会因'unique'选项而导致电子邮件崩溃(如果有其他用户没有电子邮件)。 现在,我正在应用程序级别解决它,但希望保存该数据库查询。 谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.