我正在尝试使用 mongoose 制作一个 REST API,我想隐藏 __v 属性,并且通过执行以下操作成功将其隐藏在 find 和 findById 上:
Contact.find({}, '-__v', function(error, list) { });
Contact.findById(req.params.id, '-__v', function(error, item) { });
Run Code Online (Sandbox Code Playgroud)
但是当我使用创建方法时
Contact.create(req.body, function(error, item) { });
Run Code Online (Sandbox Code Playgroud)
它返回给我添加了 __v 属性的项目。
我还尝试了在这样的模式上使用 select: false 的方法
__v: {
type: Number,
select: false
}
Run Code Online (Sandbox Code Playgroud)
此方法也执行相同的操作,它从 find 和 findById 中隐藏 __v 属性,但也不从 crate 方法返回的对象中隐藏它。
-我想向其中包含破折号字符 ( ) 的架构添加一个字段。猫鼬不允许这样做。这可能吗?
var mySchema = new Schema({
family-name: {
type: String,
default: ''
}
});
Run Code Online (Sandbox Code Playgroud) 不确定这是否会被视为重复,但我已经四处搜索并实现了与我在网上找到的类似查询,但似乎无法让我的嵌套引用起作用。我只是测试以了解用于填充嵌套引用和嵌套文档的猫鼬语法,如下所述:猫鼬嵌套模式与嵌套模型
但是,我一定错过了一些东西,因为它似乎可以工作,但返回一个空的嵌套引用数组。我知道我的查询应该返回嵌套引用的两个结果。
数据:
结果收集:
{
"_id" : ObjectId("5a4dcbe4ab9a793d888c9396"),
"event_id" : ObjectId("5a482302a469a068edc004e3"),
"event_name" : "Sample Event",
"score" : "3-2",
"winner" : "player1"
},
{
"_id" : ObjectId("5a59791379cc1c321c1918f0"),
"event_id" : ObjectId("5a482302a469a068edc004e3"),
"event_name" : "Sample Event",
"score" : "2-1",
"winner" : "player2"
}
Run Code Online (Sandbox Code Playgroud)
活动合集:
{
"_id" : ObjectId("5a482302a469a068edc004e3"),
"type" : "Tournament",
"name" : "Sample Event"
}
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
var mongoose = require("mongoose");
mongoose.connect("MongoDB://localhost/devDB");
var ResultSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
event_id: {type: mongoose.Schema.Types.ObjectId, ref: "EventModel"},
event_name: String,
score: String,
winner: String
}); …Run Code Online (Sandbox Code Playgroud) 因此,我尝试在 MongoDB 中创建一个 User 集合,并使用 GraphQL 和 mongoose 对其进行查询。
我已经在路径“pathToServer\server\models\user.js”中创建了用户架构,它看起来像这样:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: {
firstName: String,
lastName: String,
},
email: String,
password: String,
})
module.exports = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)
我创建了一个 GraphQL 类型,目前我将它放在路径“pathToServer\server\schema\types\user.js”中,它看起来像这样:
const graphql = require('graphql');
const {GraphQLObjectType, GraphQLList, GraphQLInt, GraphQLID, GraphQLString, GraphQLSchema, GraphQLNonNull} = graphql;
const UserType = new GraphQLObjectType({
name: 'User',
fields: () => ({
id: {type: GraphQLID},
email: {type: GraphQLString},
name: new GraphQLObjectType({
firstName: {type: GraphQLString},
lastName: …Run Code Online (Sandbox Code Playgroud) 我正在使用Node.js和创建服务器端应用程序Mongodb。我正在使用Mongoose包访问MongoDB数据库。而且,我希望我的 Mongoose 数组只允许将某些值推入其中。例如。如果我有我的配置mongoose阵列状支撑值admin,user并且course,有没有什么办法猫鼬禁止以外的值有任何的推动admin,user以及course入阵?
当我通过 mongoose 从 mongo 获取数据时......
const allAssets = await assets
.find({ company })
.sort([['createdAt', -1]])
.exec();
res.status(200).json({ assets: allAssets });
Run Code Online (Sandbox Code Playgroud)
我总是得到 _id 和 __v 但我不想将它们发送到前端,有没有办法可以轻松地说我不想要这些值或在发送它们之前删除它们?
{
"indistructable": true,
"_id": "5e345c2dc84be8995a5b4cf2",
"baseUri": "https://api.website.com/nameco8/",
"company": "jnameco8",
"description": "asset",
"image": "myimage.png",
"name": "jim",
"supply": 100,
"createdAt": "2020-01-31T16:56:13.816Z",
"updatedAt": "2020-01-31T16:56:13.816Z",
"__v": 0
},
Run Code Online (Sandbox Code Playgroud)
我尝试过添加
__v: {type: Number, select: false},
_id: { type: mongoose.Schema.Types.ObjectId, select: false },
Run Code Online (Sandbox Code Playgroud)
到我的架构,但是当保存到架构时,我收到错误
"document must have an _id before saving"
这是我与 TypeScript 一起使用的 Mongoose 模型:
import mongoose, { Schema } from "mongoose";
const userSchema: Schema = new Schema(
{
email: {
type: String,
required: true,
unique: true,
lowercase: true,
},
name: {
type: String,
maxlength: 50,
},
...
...
}
);
userSchema.method({
transform() {
const transformed = {};
const fields = ["id", "name", "email", "createdAt", "role"];
fields.forEach((field) => {
transformed[field] = this[field];
});
return transformed;
},
});
userSchema.statics = {
roles,
checkDuplicateEmailError(err: any) {
if (err.code === 11000) {
var …Run Code Online (Sandbox Code Playgroud) 我有一个作者和书籍及其地址的架构:
const addr = {
building: String,
block: String,
city: String,
pin: Number
}
const authorSchema = mongoose.Schema({
name: String,
books: [String],
address: addr
});
module.exports = mongoose.model('Author', authorSchema);
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试备份为 JSON 或 CSV 时,出现错误
Path collision at address.building remaining portion building
Run Code Online (Sandbox Code Playgroud) 我想按首字母查找所有文档。
情况是当我在mysql中查询时我可以做 WHERE Stores LIKE 'a%'
the result would be all data with the first letter a.
Run Code Online (Sandbox Code Playgroud)
问题是:
query使用mongoose?case-sensitive eg: (a,A)。这将是相同的查询与否?lowercase_field为这种情况创建?mongoose mongodb mongodb-query mongoose-populate mongoose-schema
mongoose ×10
mongoose-schema ×10
mongodb ×7
node.js ×5
javascript ×2
graphql ×1
graphql-js ×1
typescript ×1