Tag: mongoose

mongoose子文件在单独的文件上,如何embedded它们

我正在定义我的应用程序模型,并为每个我定义的模型有单独的文件,我的问题是,我需要创build一个使用子文档的模型,但是在另一个文件上,我如何使用该模式在我的模型上? 我的意思是我见过的所有例子在同一个文件中声明了Child模型和Parent,例如: var childSchema = new Schema({ name: 'string' }); var parentSchema = new Schema({ children: [childSchema] }); 我有一个名为user.js文件,它定义了用户模型: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ _id : Schema.Types.ObjectId, username : String, }); module.exports = mongoose.model( 'User', userSchema ); 在另一个叫做sport.js文件中,我有另外一个体育运动的模型定义: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var […]

mongoose填充嵌套数组

假设以下3个模型: var CarSchema = new Schema({ name: {type: String}, partIds: [{type: Schema.Types.ObjectId, ref: 'Part'}], }); var PartSchema = new Schema({ name: {type: String}, otherIds: [{type: Schema.Types.ObjectId, ref: 'Other'}], }); var OtherSchema = new Schema({ name: {type: String} }); 当我查询汽车时,我可以填充零件: Car.find().populate('partIds').exec(function(err, cars) { // list of cars with partIds populated }); 有没有mongoose的方式来填充所有汽车的嵌套零件对象otherIds。 Car.find().populate('partIds').exec(function(err, cars) { // […]

在node.js中为现有的json对象添加一个新的属性

我有这样的对象 ==================records=========={ Id: 5114a3c21203e0d811000088, userId: 'test', sUserId: test, userName: 'test', url: 'test', Title: 'test' } 我需要添加一个新的字段名称:'testing'到上面的logging,我试图给logging。名称=名称,它没有工作。 请帮助 谢谢,Prats

如何摆脱错误:“OverwriteModelError:不能覆盖`一旦编译未定义的模型。”?

我有一个更新MongoDB中任何集合文档的常用方法? 以下代码的文件名为Deleter.js module.exports.MongooseDelete = function (schemaObj, ModelObject); { var ModelObj = new mongoose.Model("collectionName",schemaObj); ModelObj.remove(ModelObject); } 并在我的主文件app.js中调用如下: var ModObj = mongoose.model("schemaName", schemasObj); var Model_instance = new ModObj(); var deleter = require('Deleter.js'); deleter.MongooseDelete(schemasObj,Model_instance); 我收到以下错误: OverwriteModelError: Cannot overwrite `undefined` model once compiled. at Mongoose.model (D:\Projects\MyPrjct\node_modules\mongoose\lib\index.js:4:13) 我只有第二个方法调用。请让我知道如果有任何人有一些解决scheme。

从Node HTTP请求中运行的algorithm需要更长的时间才能运行

我有一个节点的应用程序,绘制在一个x,y点图的数据。 目前,我从前端发出GET请求,后端节点服务器接受请求,循环访问数据点arrays,使用Node Canvas绘制canvas,并将其传回到显示为PNG图像的前端。 复杂的事情是可以有多边形,所以我的algorithm计算一个点是否在一个多边形内,使用多边形包中的点 ,以及数据点的颜色,如果它是不同的。 这在less于50,000个数据点的情况下工作正常。 但是,如果有80万个请求需要大约23秒。 我已经对代码进行了剖析,大部分时间都是循环遍历所有的数据点,并找出在canvas上绘制的位置以及颜色(取决于它是否在一个或多个多边形中)。 这是我做的一个笨蛋 。 基本上我做这样的事情: for (var i = 0; i < data.length; i++) { // get raw points x = data[i][0]; y = data[i][1]; // convert to a point on canvas pointX = getPointOnCanvas(x); pointY = getPointOnCanvas(y, 'y'); color = getColorOfCell(pointX, pointY); color = color; plotColor.push({ color: color, […]

unit testing与mongoose

我是Node.js,Mongoose和在这个环境中testing的新手。 我有以下模式在一个单独的文件中声明。 Issue = mongoose.model("Issue", { identifier: String, date: String, url: String, name: String, thumbnailURL: String }); 然后我有这个方法,它只是返回MongoDB集合中的所有Issue实例。 function issues(request, response) { response.setHeader('Content-Type', 'text/json'); Issue.find().sort('date').exec(function(error, items) { if (error) { response.send(403, {"status": "error", "error:": exception}); } else { response.send(200, {"issues": items}); } }); } 我已经通过实验得到了很多,现在我想testing它,但是我遇到了一个问题。 我怎么去testing它,而没有build立一个MongoDB连接等。我知道我可以设置所有的东西,但这是一个集成testing。 我想编写unit testing来testing如下的东西: 函数是否正确设置内容types 函数按date字段进行sorting 发生错误时函数是否返回403? … 等等 我很好奇,看看我可以重构我现有的代码,使其更容易testing。 我已经尝试过创build第二个被调用的函数,接受response和Item模式对象作为参数,但是感觉不对。 […]

如何处理mongodb“模式”生产中的变化

我使用mongodb + node.js + mongoose.js ORM后端。 假设我有一些没有_id字段的嵌套对象数组 mongoose.Schema({ nested: [{ _id: false, prop: 'string' }] }) 然后我想广告_id字段到所有嵌套对象,所以mongoose模式将是 mongoose.Schema({ nested: [{ prop: 'string' }] }) 然后我应该运行一些脚本来修改生产数据库,对不对? 处理这种变化的最好方法是什么? 哪个工具(或方法)最适合用来实现这个变化?

Node.js和ACL

我select了我的项目Node.js + Express + Mongoose 。 到现在为止,我不需要使用ACL ,但是在这个项目阶段,我需要实现这个。 NPM包含几个模块,但哪一个可以select? 请告诉我你的ACL(Node.js + Express + Mongoose)的经验。 如果你知道任何教程,那将是非常棒的:),但并不是那么需要,我确实需要知道Node.js程序员使用哪些ACL。 最后的可能是写自己的acl中间件,对我来说可能是有趣的经验。 我想 :)

mongoose不创build索引

试图创buildMongoDB索引。 使用Mongoose ODM,并在我的模式定义下面我有用户名字段设置为唯一索引。 集合和文档都得到了正确的创build,只是索引不起作用。 所有的文档都说应该在启动时运行ensureIndex命令来创build任何索引,但是没有任何索引。 如果有问题,我正在使用MongoLab进行托pipe。 我也一再抛弃collections。 哪里不对。 var schemaUser = new mongoose.Schema({ username: {type: String, index: { unique: true }, required: true}, hash: String, created: {type: Date, default: Date.now} }, { collection:'Users' }); var User = mongoose.model('Users', schemaUser); var newUser = new Users({username:'wintzer'}) newUser.save(function(err) { if (err) console.log(err); });

mongoose更新'不能使用部分(..)来遍历元素

我有这个非常恼人的问题,我不能使用mongoose更新任何东西。 使用真的令人沮丧,文档根本没有帮助。 我有这个模式: var userSchema = mongoose.Schema({ local : { email : String, password : String, }, devices : [{ id : String, name : String }] }); 这是我想要添加设备到arraysdevices : function updateDeviceList(user, deviceID, deviceName) { User.update({ 'local.email' : user}, { $set: {'devices.id' : deviceID, 'devices.name' : deviceName}}, function(err, response) { if(err) { console.log("Update device error", […]