Tag: mongoose schema

必需的子文档Mongoose

我已经定义了下面的Mongoose模式 var subSchema = new Schema({ propertySub: {type: String, required: true} }); var mainSchema = new Schema({ mainProperty: {type: String, required: true}, subs: [subSchema] }); 正如你可能看到subSchema上有一个必需的属性,问题是我想要一个mainSchema被要求有至less一个subSchema ,但是当我发送一个 { "mainProperty" : "Main" } 没有失败。 我试过类似的东西 subs: [{ type: subSchema, required: true }] 但它会抛出以下内容: TypeError:未定义的typesundefined在array subs 所以无论如何要做到这一点,也许validate我是新来的节点和mongoose所以一个解释将不胜感激

Mongoose创build后find方法

我有一个动物模式: const AnimalSchema = new mongoose.Schema({ type: { type: String, default: "goldfish" }, size: String, color: { type: String, default: "golden" }, mass: { type: Number, default: 0.007 }, name: { type: String, default: "Angela" } }); 动物数据arrays: let animalData = [ { type: 'mouse', color: 'gray', mass: 0.035, name: 'Marvin' }, { type: 'nutria', […]

如何使用mongoose填充无限嵌套级别的文档

我正在devise一个pipe理父母和小孩公司组织结构的Web应用程序。 有两种types的公司:1 – 主要公司,2 – 子公司。公司只能属于一家公司,但可以有几个小公司。 我的mongoose模式看起来像这样: var companySchema = new mongoose.Schema({ companyName: { type: String, required: true }, estimatedAnnualEarnings: { type: Number, required: true }, companyChildren: [{type: mongoose.Schema.Types.ObjectId, ref: 'Company'}], companyType: {type: String, enum: ['Main', 'Subsidiary']} }) module.exports = mongoose.model('Company', companySchema); 我把所有的公司都存放在一个集合中,每个公司都有一个引用它的子公司的列表。 然后,我想显示所有公司作为一个树(在客户端)。 我想查询所有主要的公司,填充他们的孩子和孩子,他们的孩子等,无限的嵌套级别。 我怎样才能做到这一点? 或者,也许你知道更好的方法。 另外我需要能够查看,添加,编辑,删除任何公司。 现在我有这个: router.get('/companies', function(req, res) { Company.find({companyType: 'Main'}).populate({path: […]

我的mongoose纲要是不正确的?

我相信我的Mongoose Schema必须是不正确的,因为我在Mongoose中使用.save()时没有正确更新我的数据库。 在下面的nodeJS路由运行之后,callback中接收到的更新对象是正确的,但在后续运行中,DB对象是空的,并且从未更新过。 以下是我的数据看起来像的一个例子: var newApplicationData = new ApplicationData({ pos1: 0, pos2: 0, applicationData: [ // Standard One { sections: [ { narrative: '', documentation: [] }, { narrative: '', documentation: [] }, { narrative: '', documentation: [] } ] }, // Standard 2 { sections: [ { narrative: '', documentation: [] }, { narrative: […]

在更新使用Mongoose模型检索并作为承诺处理的文档时遇到问题

跳转到更新#2了解更多细节 我有一个简单的更新问题,通过从Mongoose模型查询容器检索到的文档。 查询查询确实有两个人口,但除此之外,我不知道这个问题可能是什么 我遇到的问题是当我检索一个文档,更新一个属性,然后尝试通过Mongoose Doc.save()方法保存更新到文档,似乎什么也没有发生。 有什么奇怪的是,save()甚至不会传递给它的callback触发..(或者如果我把它作为Promise来处理,则可以触发then()或catch() ) 型号:资产 module.exports = Mongoose => { const Schema = Mongoose.Schema const assetSchema = new Schema({ attributes: [{ _field: { type: Schema.Types.ObjectId, ref: 'Field', required: true }, value: { type: Schema.Types.Mixed, required: true } }], _partition: { type: Schema.Types.ObjectId, ref: 'Partition' } }) return Mongoose.model( 'Asset', assetSchema ) } […]

我如何在Mongoose中执行查询查询?

我有一个类似MongoDB的Ebooks数据集 { "_id" : ObjectId("58b56fe19585b10cd42981d8"), "cover_path" : "D:\\Ebooks\\uploads\\ebooks\\cover\\1488285665748-img1-700×400.jpg", "path" : "D:\\Ebooks\\uploads\\ebooks\\pdf\\1488285665257-Webservices Natraz.pdf", "description" : "ebook", "title" : "book name", "tag" : [ "Hindi", "Other" ], "__v" : NumberInt(0) } 现在我想search一些关键字是否与"title:"匹配一点,然后显示所有相关的书籍对象。 我的Mongoose模式是: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var EbookSchema = new Schema({ title: {type:String}, description: {type:String}, path: {type:String,required:true}, cover_path: {type:String,required:true}, tag: [{ type: […]

Mongoose模式创build空的数组字段

在我的Food架构中,我有不同的领域,基于另一个领域称为yummy 。 例如: 如果yummy等于pancake ,我的田地是dough和jam 如果yummy等于pizza ,我的田地是dough , meat和cheese 等等。它保存文档的预期工作 – 我只是通过我想要保存每个文件的字段,因为它们都不是必需的,除了yummy 。 所以如果我保存: { yummy: 'pizza' dough: 'thin' meat : 'peperroni', cheese: [ObjectId("59a65a4f2170d90b0436ed4b")] // refs to the cheeses collection. } 我的文件看起来像预期的。 问题是与type: Array字段type: Array 。 当我保存: { yummy: 'pancake', dough: 'thick', jam: 'blueberry' } 我的文档保存有一个额外的cheese: []字段。 在我的模式中,奶酪的定义如下: Mongoose.model('Food', { … cheese: { type: [{ […]

validationMongoose模式并显示自定义错误消息的最佳实践

我已经开始学习Node.js,有一点让我感到困惑的是Schemavalidation。 validation数据并向用户显示自定义错误消息的最佳做法是什么? 比方说,我们有这个简单的架构: var mongoose = require("mongoose"); // create instance of Schema var Schema = mongoose.Schema; // create schema var Schema = { "email" : { type: String, unique: true }, "password" : String, "created_at" : Date, "updated_at" : Date }; // Create model if it doesn't exist. module.exports = mongoose.model('User', Schema); 我希望注册用户具有独特的电子邮件,所以我已经添加了unique: true的我的架构。 现在,如果我想向用户显示错误消息,说明他为什么没有注册,我会收到类似这样的回应: […]

mongoose模式中的嵌套对象

我在这里看到了很多关于这个问题的答案,但是我仍然不明白(也许是因为他们使用了更多“复杂”的例子)…所以我试图做的是一个“客户”的模式,将有两个嵌套“子字段”的字段,以及其他可能重复的字段。 这里是我的意思: let customerModel = new Schema({ firstName: String, lastName: String, company: String, contactInfo: { tel: [Number], email: [String], address: { city: String, street: String, houseNumber: String } } }); 电话和电子邮件可能是一个数组。 和地址将不会重复,但有一些子字段,你可以看到。 我怎样才能做这个工作?

简单的方法来增加任何更新查询的Mongoose文档版本?

我想开始利用Mongoose文档版本控制(__v key)。 我有一个问题,实际上增加版本的价值,然后我发现你必须添加this.increment()执行查询时。 有没有办法自动递增? 现在,我只是把它添加到前置中间件中进行更新types的查询: module.exports = Mongoose => { const Schema = Mongoose.Schema const modelSchema = new Schema( { name: Schema.Types.String, description: Schema.Types.String } ) // Any middleware that needs to be fired off for any/all update-type queries _.forEach( [ 'save', 'update', 'findOneAndUpdate' ], query => { // Increment the Mongoose (__v)ersion for any […]