我正在使用mongoose(节点),输出id而不是_id的最佳方法是什么?
我有一个带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中的集合中排除一个/(两个)特定字段.
我有这个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) 我找到了以下脚本:
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模型模式的预保存回调中找出记录"是新的"(尚未保存)?
我有这个代码
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
我刚刚开始mongodb,我最近经历了Mongoose一个ODM框架.
在文档上,我找不到我们需要使用的原因Mongoose.我可以给出的一个原因是我们可以定义应用程序模式Mongoose.
我正在寻找更多可能的原因,以及吸引我使用的需求Mongoose.
请列出所有可能的优点和原因/需求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)
但是,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) 使用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)