我正在准备Node.js和Mongoose中的数据库创build脚本。 我如何检查数据库是否已经存在,如果是的话,使用Mongoose删除(删除)它? 我找不到用mongoose把它放下的办法。
myModel.find({}, function(err, items){ console.log(items.length); // big number }); 如何限制返回的项目只能插入最近的10个项目?
我正在尝试使用mongoose在其中创build一个数据库和一个集合。 我的代码是: 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(); 当我运行这个代码时,mongoose创build了名为UserInfo的集合,而不是userinfo。 如何在mongoose强制收集名称?
我很好奇在我的主要模式中使用子文档与更深层次的优点和缺点: var subDoc = new Schema({ name: String }); var mainDoc = new Schema({ names: [subDoc] }); 要么 var mainDoc = new Schema({ names: [{ name: String }] }); 我目前在各地使用subdocs,但我主要想知道性能或查询我可能遇到的问题。
我找不到sorting修饰符的文档。 唯一的见解是在unit testing中: https : //github.com/LearnBoost/mongoose/blob/master/tests/unit/spec.lib.query.js writer.limit(5).sort(['test',1])。group('name') 但是这对我不起作用: Post.find()。sort(['updatedAt',1]);
使用nodejs和express,我想使用JSON返回一个或多个对象(数组)。 在下面的代码中,我一次输出一个JSON对象。 它的作品,但这不是我想要的。 产生的响应不是有效的JSON响应,因为我有很多对象。 我很清楚,我可以简单地将所有对象添加到数组中,并返回res.end中的特定数组。 但是恐怕这会变得沉重,处理和记忆密集。 什么是适当的方式来实现这个nodejs? query.each是否是正确的调用方法? app.get('/users/:email/messages/unread', function(req, res, next) { var query = MessageInfo .find({ $and: [ { 'email': req.params.email }, { 'hasBeenRead': false } ] }); res.writeHead(200, { 'Content-Type': 'application/json' }); query.each(function(err, msg) { if (msg) { res.write(JSON.stringify({ msgId: msg.fileName })); } else { res.end(); } }); });
我习惯于Java中的传统OOP。 使用NodeJS在JavaScript中执行OOP的最佳做法是什么? 每个类是一个文件与module.export ? 如何创build类? 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() {} this.Class.prototype.method = function(){} […]
我是三年前在我的自定义方法上开发mongoose顶部的类,所以我用自己的类扩展mongoose,但是当我调用创build一个新的汽车方法,它的作品,但它的脱衣舞和错误,在这里,我让你看看我正在努力。 我得到这个警告 (node:3341) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html 我做完之后 driver.createCar({ carName: 'jeep', availableSeats: 4, }, callback); 驱动程序是Driver类的一个实例 const carSchema = new Schema({ carName: String, availableSeats: Number, createdOn: { type: Date, default: Date.now }, }); const driverSchema = new Schema({ email: String, name: String, […]
根据MongooseJS和MongoDB / Node.js的Mongoose 文档 : 当您的应用程序启动时,Mongoose将自动为您的模式中定义的每个索引调用ensureIndex 。 尽pipe对开发很好,但build议在生产中禁用此行为,因为索引创build可能会对性能产生重大影响。 通过将模式的autoIndex选项设置为false来禁用此行为。 这似乎指示从部署之前从mongoose中删除自动索引,以优化Mongoose从指示Mongo到应用程序启动时通过所有索引进行转移,这似乎是有道理的。 在生产代码中处理索引的正确方法是什么? 也许外部脚本应该生成索引? 或者,如果单个应用程序是集合的唯一读取器/写入器,那么ensureIndex是不必要的,因为每次发生数据库写入时它都会继续索引。 编辑:为了补充,MongoDB为如何做索引提供了很好的文档 ,但不是为什么或什么时候显式索引指令应该完成。 在我看来,索引应该由ensureIndex器应用程序在具有现有索引的集合上自动保持最新,并且ensureIndex实际上更多是一次性的事情(在新索引被应用时完成),在这种情况下,Mongoose的autoIndex应该在正常服务器重新启动的情况下为空操作。
我在数据库test中有300个question对象的大集合。 我可以通过MongoDB的交互式shell轻松地与这个集合交互; 但是,当我尝试通过Mongoose在express.js应用程序中获取集合时,我得到一个空数组。 我的问题是,我怎样才能访问这个已经存在的数据集,而不是用快速重新创build它? 这是一些代码: 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