草庐IT

mongoose-populate

全部标签

node.js - 如何在 mongoose 中保存从 query.exec() 函数返回的对象

我是Mongoose的新手。这是我的场景:varchildSchema=newSchema({name:'string'});varparentSchema=newSchema({children:[childSchema]});varParent=mongoose.model('Parent',parentSchema);假设我已经创建了一个带有子项的父项“p”,并且我正在查询“p”,使用varquery=Parent.find({"_id":"562676a04787a98217d1c81e"});query.select('children');query.exec(functi

node.js - MongoDB/Mongoose $pull(删除)子文档不起作用

为此把我的头撞到键盘上。只需要删除子文档。下面的示例在OnCommands中只有一个项目,但那里可能有很多项目。我试过find、findbyid、updatebyId、pull,一个接一个。通过子文档的_id和通用搜索进行了尝试最简单的运行没有做任何事情没有错误。如果您能告诉我我做错了什么,我将非常感激,这是我代码的最后一部分不起作用。示例数据:>db.EntryPoints.find({_id:ObjectId("569e4fabf1e4464495ebf652")}).pretty(){"__v":0,"_id":ObjectId("569e4fabf1e4464495ebf652

javascript - 为什么默认情况下 Mongoose 文档不是纯 JavaScript 对象?

从MongoDB数据库返回Mongoose文档时,您不能只编辑返回的文档。您需要通过.toObject()将其转换为纯JavaScript对象。功能-尚未为我工作-或JSON.parse(JSON.stringify(doc))它。我的问题是为什么会这样?为什么不默认将它们作为简单、简单、易于使用的JavaScript对象返回? 最佳答案 因为Mongoose文档有额外的功能,比如各种built-inandcustominstancemethods.例如,它允许您在更改文档后调用document.save(...)。如果您希望查询返

Node.JS Express 4 - Mongoose 不保存数据

我正在尝试将数据保存在MongoDB中与Mongoose与Express.JS4和Bluebird.我做的是这样的-bin/wwwvarmongoose=require('mongoose');mongoose.Promise=require('bluebird');..............db.on('error',console.error.bind(console,'connectionerror:'));db.once('open',function(){//successfullyconnected!console.log("SuccessfullyConnectedto

node.js - 如何为所有模式注册 Mongoose 插件?

我错过了什么?Mongoose文档说mongoose.plugin()为所有模式注册了一个插件。这是行不通的。我可以在每个模式上注册我的插件。我的插件:module.exports=function(schema,options){schema.set('toObject',{transform:function(doc,ret,options){return{test:'Itworked!'};}});};我的模式:vartestPlugin=require('test-plugin.js');varpersonSchema=mongoose.Schema({_id:{type:St

javascript - 获取类型错误 : Unknown encoding: 1 while running the server script with Mongoose

我正在运行以下代码,使用Mongoose将水果名称插入数据库。它确实插入了对象,但随后抛出TypeError:Unknownencoding:1并退出脚本。我尝试更新Mongoose和Mongo,但没有解决问题。varmongoose=require('mongoose');varassert=require('assert');varFruits=require('./models/fruits-1');varurl='mongodb://localhost:27017/confusion';mongoose.connect(url);vardb=mongoose.connectio

node.js - 在放入 Mongoose 之前检查集合是否存在

调用drop()时集合不存在时,会抛出错误:nsnotfound目前我正在使用类似的东西try{awaitMongooseModel.collection.drop();}catch(err){if(err.message!=='nsnotfound'){throwerr;}}味道不太好。目前还不清楚为什么首先会抛出错误,我希望drop()如果不存在则返回false,就像在Mongo中所做的那样控制台。当只有对Mongoose模型MongooseModel的引用时,如何做到这一点?我在执行此操作的地方没有对连接对象的引用,如thisanswer中所建议的那样.

javascript - Mongoose:Coffeescript 中的递归嵌入式文档

基于thisexample(有效):varComment=newSchema();Comment.add({title:{type:String,index:true},date:Date,body:String,comments:[Comment]});我想创建一个CoffeeScript版本mongoose=require'mongoose'Schema=mongoose.SchemaPerson=newSchemaPerson.addmother:Personfather:Person但是它返回一个错误,我不明白为什么TypeError:undefinedisnotafuncti

node.js - 在 Mongoose (mongodb node.js) 中,如何更新现有值并插入缺失值,而不删除未指定的值?

我正在尝试维护一个瞬时统计block,例如;model={id:123,stats:{fooCount:117,barCount:175,bazCount:654}}...并能够更新现有记录,但仅指定新值,如下所示:model.update({'_id':123,stats:{fooCount:118}});...没有吹走stats中的旧值。这是否可以在不围绕我的更新编写太多代码的情况下实现? 最佳答案 你应该使用$set运算符(operator)在你的更新中像这样:varconditions={_id:123};varupdate

node.js - Mongoose Model.count() 没有按照记录运行回调

我关注的差不多theexactexampleforModel.count()来自Mongoose文档:User.count({type:'jungle'},function(err,count){console.log('Idonoteverrun');});这应该打印“我从来没有跑过”。相反,它返回一个Query对象——根据文档,这不应该发生,因为我正在提供回调。我怎样才能让回调函数运行?是否存在回调不运行的某些情况?使用mongoose@3.6.17。谢谢! 最佳答案 确保在调用任何模型函数之前已连接到数据库。Mongoose只