标签: mongoose

MongoDB:输出'id'而不是'_id'

我正在使用mongoose(节点),输出id而不是_id的最佳方法是什么?

mongoose mongodb node.js

50
推荐指数
11
解决办法
4万
查看次数

如何从Mongoose中的集合中排除一个特定字段?

我有一个带Mongoose ODM的NodeJS应用程序(Mongoose 3.3.1).我想从我的集合中检索除1之外的所有字段.例如:我有一个集合Product有6个字段,我想要选择除"Field"字段之外的所有字段.我使用" 排除 "方法,但得到错误..这是我的代码.

    var Query = models.Product.find();
    Query.exclude('title Image');

    if (req.params.id) {
        Query.where('_id', req.params.id);
    }


    Query.exec(function (err, product) {
        if (!err) {
            return res.send({ 'statusCode': 200, 'statusText': 'OK', 'data': product });
        } else {
            return res.send(500);
        }
    });
Run Code Online (Sandbox Code Playgroud)

但这会返回错误

Express
500 TypeError: Object #<Query> has no method 'exclude'.........
Run Code Online (Sandbox Code Playgroud)

我也试过,var Query = models.Product.find().exclude('title','Image');var Query = models.Product.find({}).exclude('title','Image'); 而得到同样的错误.如何从Mongoose中的集合中排除一个/(两个)特定字段.

javascript mongoose mongodb mongodb-query

50
推荐指数
4
解决办法
5万
查看次数

将对象推送到Mongoose中的数组模式

我有这个mongoose架构

var mongoose = require('mongoose');

var ContactSchema = module.exports = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  phone: {
    type: Number,
    required: true,
    index: {unique: true}
  },
  messages: [
  {
    title: {type: String, required: true},
    msg: {type: String, required: true}
  }]
}, {
    collection: 'contacts',
    safe: true
});
Run Code Online (Sandbox Code Playgroud)

并尝试通过执行以下操作来更新模型:

Contact.findById(id, function(err, info) {
    if (err) return res.send("contact create error: " + err);

    // add the message to the contacts messages
    Contact.update({_id: info._id}, {$push: {"messages": {title: title, msg: msg}}}, …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb

50
推荐指数
2
解决办法
8万
查看次数

如何在mongoose中更新多个文档

我找到了以下脚本:

Device.find(function(err, devices) {
  devices.forEach(function(device) {
    device.cid = '';
    device.save();
  });
});
Run Code Online (Sandbox Code Playgroud)

MongoDB有多个文件更新的"多"标志,但我无法使用mongoose.这还不支持还是我做错了什么?!

Device.update({}, {cid: ''}, false, true, function (err) {
  //...
});
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

49
推荐指数
3
解决办法
8万
查看次数

如何使用Node.js在MongoDB中使用cursor.forEach()?

我的数据库中有大量文档,我想知道如何浏览所有文档并更新它们,每个文档都有不同的值.

mongoose mongodb node.js

49
推荐指数
6
解决办法
7万
查看次数

确定预保存回调中的记录"是否为新"

有没有办法在mongoose模型模式的预保存回调中找出记录"是新的"(尚未保存)?

mongoose mongodb node.js

48
推荐指数
2
解决办法
1万
查看次数

为什么Mongoose不会在更新时验证?

我有这个代码

var ClientSchema = new Schema({
  name: {type: String, required: true, trim: true}
});

var Client = mongoose.mode('Client', ClientSchema);
Run Code Online (Sandbox Code Playgroud)

使用express,我使用此代码创建一个新客户端

var client = new Client(req.body);
client.save(function(err, data) {
  ....
});
Run Code Online (Sandbox Code Playgroud)

如果我在表单上留下名称字段为空,则mongoose不允许创建客户端,因为我在架构上按需要设置它.另外,如果我在名称前后留下空格,mongoose会在保存前删除该空格.

现在,我尝试使用此代码更新客户端

var id = req.params.id;
var client = req.body;
Client.update({_id: id}, client, function(err) {
  ....
});
Run Code Online (Sandbox Code Playgroud)

它允许我更改名称,但如果我在表单上将其留空,则mongoose不会验证并保存一个空名称.如果我在名称前后添加空格,则使用空格保存名称.

为什么mongoose在保存时验证但在更新时没有验证?我是以错误的方式做到的?

mongodb:2.4.0 mongoose:3.6.0 express:3.1.0 node:0.10.1

mongoose

48
推荐指数
3
解决办法
2万
查看次数

为什么我们需要,使用猫鼬有什么好处

我刚刚开始mongodb,我最近经历了Mongoose一个ODM框架.

在文档上,我找不到我们需要使用的原因Mongoose.我可以给出的一个原因是我们可以定义应用程序模式Mongoose.

我正在寻找更多可能的原因,以及吸引我使用的需求Mongoose.

请列出所有可能的优点和原因/需求Mongoose.

mongoose mongodb node.js

48
推荐指数
2
解决办法
2万
查看次数

处理Mongoose验证错误 - 在哪里以及如何?

我正在尝试决定如何处理Mongoose中的验证错误.

使用节点验证程序的自定义错误消息

我使用node-validator定义了自己的验证规则,例如:

UserSchema.path('username')
  .validate(function (username) {
    return validator.check(username).notEmpty()
  }, 'Username cannot be blank')
Run Code Online (Sandbox Code Playgroud)

这会产生如下错误:

  username: 
   { message: 'Validator "Username cannot be blank" failed for path username',
     name: 'ValidatorError',
     path: 'username',
     type: 'Username cannot be blank' },
Run Code Online (Sandbox Code Playgroud)

使用mongoose-validator

但是,node-validator提供自己的错误消息.如果我使用mongoose-validator节点模块将node-validator直接插入我的模式,那么我可以直接使用这些错误消息:

var UserSchema = new Schema({
  name: { type: String, validate: [validate('notEmpty')] }
});
Run Code Online (Sandbox Code Playgroud)

这将生成如下所示的错误消息:

  name: 
   { message: 'Validator "String is empty" failed for path name',
     name: 'ValidatorError',
     path: 'name',
     type: 'String is empty' } }
Run Code Online (Sandbox Code Playgroud)

我也可以在这里提供自定义错误消息:

var …
Run Code Online (Sandbox Code Playgroud)

validation mongoose mongodb node.js

47
推荐指数
3
解决办法
6万
查看次数

Mongoose填充vs对象嵌套

使用Mongoose填充和直接对象包含之间是否存在任何性能差异(查询的处理时间)?什么时候应该使用?

猫鼬人口例子:

var personSchema = Schema({
  _id     : Number,
  name    : String,
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

var storySchema = Schema({
  _creator : { type: Number, ref: 'Person' },
  title    : String,
});
Run Code Online (Sandbox Code Playgroud)

Mongoose对象嵌套示例:

var personSchema = Schema({
  _id     : Number,
  name    : String,
  stories : [storySchema]
});

var storySchema = Schema({
  _creator : personSchema,
  title    : String,
});
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

47
推荐指数
1
解决办法
2万
查看次数