Articles of 数据库模式

如何在meteor中使用打字稿使用mongo模式validation?

在使用Typescript时,是否有一个在Meteor 1.3中使用模式validation的包? meteor指南推荐的软件包(aldeed:simple-schema)似乎没有定义文件。 那么用什么来代替,或者Typescript有一个内置的方法来做到这一点?

mongoose的行为和模式

目前我正在学习nodejs和mongodb,有两件事让我迷惑。 (1),当使用新的Schema和模型名称(不在db中)时,名称被改为复数forms。 例: mongoose.model('person', personSchema); 在数据库中,该表将被称为“人”。 这难道不容易混淆新开发者,为什么他们这样实现呢? (2)第二件事是,每当我想引用mongoDb中的现有模型(假设在db中,存在一个名为people的表)。 然后在我的nodejs代码中,我仍然需要定义一个Schema来创build一个引用这个表的模型。 personSchema = new mongoose.Schema({}); mongoose.model('person',personSchema); 不寻常的是,我如何定义模式似乎并不重要,它可以像上面那样是空的,或者填充随机属性,但是模型总是会得到正确的表,并且CRUD操作正常执行。 那么除了定义表结构来创build新表之外,Schema的用法是什么? 非常感谢,

Upvote和Downvote主干,快车和mongoose

我正在尝试实现类似于stackoverflow或reddit的投票系统,用户只能在给定的职位上投票一次。 遵循这里给出的build议 在mongodb中存储upvotes / downvotes 我创build了两个模式来存储upvotes和downvotes。 对于每个用户,我都跟踪用户投票的post。 邮政架构: var postSchema = new Schema({ name: String, votes: Number, votetype: Number, postedBy: { type: String, ref: 'User' }, }); 用户架构: var userSchema = new Schema({ twittername: String, twitterID: Number, votedPosts : [{ _id : mongoose.Schema.Types.ObjectId , votetype: Number }] }); 取决于当前用户,每个post将有不同的视图,如果用户在upvotebutton或downvotebutton将变为橙色之前投票(与stackoverflow类似),所以我有以下(简化)主干模型的职位: var PostModel = Backbone.Model.extend({ urlRoot : […]

如何在Mongoose中创build相互依赖的模式?

我有两个Schema,我希望他们与海誓山盟互动。 例如: // calendar.js var mongoose = require('mongoose'); var Scema = mongoose.Schema; var Day = mongoose.model('Day'); var CalendarSchema = new Schema({ name: { type: String, required: true }, startYear: { type: Number, required: true } }); CalendarSchema.methods.getDays = function(cb){ Day.find({ cal: this._id }, cb); } module.exports = mongoose.model('Calendar', CalendarSchema); // day.js var mongoose = require('mongoose'); […]

MongoDB:删除唯一的约束

我正在尝试“用Express和Mongoose开发使用Node.js的RESTful API”的例子,我遇到了一个MongoDB Schema的问题: POST: { title: 'My Awesome T-shirt 2', description: 'All about the details. Of course it\'s black.', style: '12345' } { [MongoError: E11000 duplicate key error index: ecomm_database.products.$style_1 dup key: { : "12345" }] name: 'MongoError', err: 'E11000 duplicate key error index: ecomm_database.products.$style_1 dup key: { : "12345" }', 模式定义中有一个独特的约束: var Product = […]