Tag: mongoose

MongoError,错误:E11000重复键错误

我有这样的MongoDb模式 var User = new Schema({ "UserName": { type: String, required: true }, "Email": { type: String, required: true, unique: true }, "UserType": { type: String }, "Password": { type: String } }); 我想创build一个新的用户这是在使用mongoose ODM的NodeJs中完成的这是创build的代码: controller.createUser = function (req, res) { var user = new models.User({ "UserName": req.body.UserName.toLowerCase(), "Email": req.body.Email.toLowerCase(), "UserType": req.body.UserType.toLowerCase() }); models.User.findOne({ 'Email': […]

从Mongoose查询返回的内容找不到匹配项?

阅读Mongoose文档,我有点困惑。 如果我在与集合中没有任何文档匹配的mongoose中运行查询,callback函数callback(err, results)的err和results的值是什么? 我只是不知道mongoose认为是什么“错误”。 作为一个math家,返回空集(即results数组为空)似乎是完全有效的,不应该是一个“错误” – 查询执行得很好,只是没有匹配的文件。 另一方面,有人可能认为这是一个“错误”。 从mongoose的文档,无论是: err = null, results = [] err = null, results = null err =错误文档, results = null

mongoosesorting聚合的结果

解决这个mongodb(mongoose)问题我有很多困难。 有这个架构'推荐'(用户名,roomId,ll和date),其集合包含用户的build议。 我需要得到最推荐的房间列表(由roomId)。 下面是模式和我尝试过的mongoose查询解决scheme。 var recommendSchema = mongoose.Schema({ username: String, roomId: String, ll: { type: { type: String }, coordinates: [ ] }, date: Date }) recommendSchema.index({ ll: '2dsphere' }); var Recommend = mongoose.model('Recommend', recommendSchema); Recommend.aggregate( { $group: { _id: '$roomId', recommendCount: { $sum: 1 } } }, function (err, res) { if (err) return […]

Node.js / Express – 找不到页面时呈现错误

我在Node.js中有以下控制器/路由定义(使用Express和Mongoose)。 当用户请求一个不存在的页面时,处理Error的最合适的方法是什么? app.get('/page/:pagetitle', function(req, res) { Page.findOne({ title: req.params.pagetitle}, function(error, page) { res.render('pages/page_show.ejs', { locals: { title: 'ClrTouch | ' + page.title, page:page } }); }); }); 它目前打破我的应用程序。 我相信因为我没有对错误做任何事情,我只是把它传递给视图就像一个成功? TypeError: Cannot read property 'title' of null 非常感谢。

检查mongoose连接状态而不创build新的连接

我有一些testing – 即Supertest – 加载我的快速应用程序。 这个应用程序创build一个Mongoose连接。 我想知道如何从我的testing中检查该连接的状态。 在app.js中 mongoose.connect(…) 在test.js中 console.log(mongoose.connection.readyState); 如何访问app.js连接? 如果我在test.js中使用相同的参数连接,将创build一个新的连接或寻找现有的?

在Node.js中,当我需要时创build一个新对象吗?

所以,我不确定的是那个。 如果在ModuleA中 ,我有: var mongoose = require('mongoose'); mongoose.connect(pathA); 在ModuleB中 ,我有: var mongoose = require('mongoose'); mongoose.connect(pathB); 在主程序中,我有: var mA = require('./moduleA.js'), mB = require('./moduleB.js'); 所以,当我运行主程序时,我想我会创build两个mongoose“实例”一个连接到pathA,一个连接到pathB,是吗? 另外,在模块B中,在连接到pathB之前,它是连接到pathA还是没有连接? 谢谢。

在保存mongoose时用ObjectId引用文档

我有以下模式: // ingredient var ingredSchema = new Schema({ name: String, cost: Number }); // order var orderSchema = new Schema({ cusName: String, ingredients: [{type: Schema.Types.ObjectId, ref: 'Ingredient'}] }); // create model var Ingredient = mongoose.model('Ingredient', ingredSchema); var Order = mongoose.model('Order', orderSchema); 我已经在一个收集ingredients保存了一堆成分,并有一个用户界面,用户可以select一套汉堡的配料。 然后我尝试在同样的数据库burgers内保存另一个集合orders汉堡的orders ,如下所示: // get order info from the form var newOrder = new […]

mongoose – 通过标准查找子文档

我刚刚陷入这个问题。 我有两个mongoose模式: var childrenSchema = mongoose.Schema({ name: { type: String }, age: { type: Number, min: 0 } }); var parentSchema = mongoose.Schema({ name : { type: String }, children: [childrenSchema] }); 问题是,如何从每个父文档中获取所有子文档(在本例中为childrenSchema对象)? 假设我有一些数据: var parents = [ { name: "John Smith", children: [ { name: "Peter", age: 2 }, { name: "Margaret", age: 20 […]

Mongoose:CastError:强制转换为ObjectId的path“_id”的值为“”

我对node.js是新手,所以我有一种感觉,这将是我忽略的一些愚蠢的东西,但是我一直无法find解决我的问题的答案。 我想要做的是创build一个path,将创build一个新的子对象,将其添加到父项的子数组,然后将子对象返回给请求者。 我遇到的问题是,如果我将stringID传递给findById,节点崩溃 TypeError:Object {}没有方法'cast' 如果我尝试传入一个ObjectId,我会得到 CastError:在path“_id”上投射到ObjectId的值“[object Object]”失败 这是我的代码的一个粗略的轮廓: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ObjectId = Schema.ObjectId; //Have also tried Schema.Types.ObjectId, mongoose.ObjectId mongoose.connect('mongodb://user:password@server:port/database'); app.get('/myClass/:Id/childClass/create', function(request, result) { var id = new ObjectId(request.params.Id); MyClass.findById(id).exec( function(err, myClass) { if (err || !myClass) { result.send("error: " + err + "<br>" + JSON.stringify(id) || ("object […]

mongoose填充embedded式

我使用Mongoose.js并不能解决3级层次结构文件的问题。 有两种方法来做到这一点。 第一 – 没有参考。 C = new Schema({ 'title': String, }); B = new Schema({ 'title': String, 'c': [C] }); A = new Schema({ 'title': String, 'b': [B] }); 我需要显示Clogging。 我怎么能填充/find它,只知道C的_id? 我曾尝试使用: A.findOne({'bc_id': req.params.c_id}, function(err, a){ console.log(a); }); 但是我不知道如何从一个对象只得到我需要的对象。 其次,如果使用参考: C = new Schema({ 'title': String, }); B = new Schema({ 'title': String, 'c': […]