我有一个代表文件夹的对象集合。我想让用户创建文件夹,因为他们喜欢与应用程序将创建一个“根”文件夹(对象)的约束,我想控制这个文件夹的_id属性。根据mongoDB文档,我应该能够设置_id字段,但是当我尝试时,我得到一个错误:
Cast to ObjectId failed for value "0" at path "_id"
mongo文档说_id可以是数组以外的任何BSON数据类型,因此我不理解为什么“0”无效。为什么我不能使用“0”作为\u id?
为了清楚起见,我希望mongoDB为根文件夹以外的所有其他情况生成一个id。
文件夹架构:
const mongoose = require('mongoose');
const constants = require('../config/constants');
const { Schema } = mongoose;
const FolderSchema = new Schema(
{
user: {
type: Schema.Types.ObjectId,
ref: 'User',
required: [true, 'Folder must have a user'],
},
name: {
type: String,
required: true,
trim: true,
},
dateCreated: {
type: Date,
default: Date.now,
},
lastUpdated: {
type: Date,
default: Date.now,
},
parentId: {
type: String,
required: true,
},
},
{
toJSON: { virtuals: true },
toObject: { virtuals: true },
},
);
FolderSchema.index({ name: 'text' });
// eslint-disable-next-line func-names
FolderSchema.virtual('id').get(function () {
return this._id.toHexString();
});
module.exports = mongoose.model('Folder', FolderSchema);
您需要在模式中声明\u id
应具有的格式。Mongoose默认为BSON ObjectId,但可以根据文档进行覆盖:(emphasis mine)
您还可以用自己的_id覆盖Mongoose的默认_id。请注意:Mongoose将拒绝保存没有_id的文档,因此如果您定义自己的_id路径,您有责任设置_id。
const schema=newschema({u id:Number})
const Model=mongoose。模型(“测试”,模式)
const doc=new Model()
等待单据。save();//抛出“保存前文档必须有_id”
doc_id=1
等待单据。save();//作品
将此应用于架构:
const FolderSchema = new Schema(
{
_id: {
type: Number,
required: true,
},
user: {
type: Schema.Types.ObjectId,
ref: 'User',
required: [true, 'Folder must have a user'],
},
name: {
type: String,
required: true,
trim: true,
},
dateCreated: {
type: Date,
default: Date.now,
},
lastUpdated: {
type: Date,
default: Date.now,
},
parentId: {
type: String,
required: true,
},
},
{
toJSON: { virtuals: true },
toObject: { virtuals: true },
},
);
问题内容: 我有一个简单的程序: 当我运行该程序时,我看到的只是用于输出。我原本希望我们会遇到第一轮,然后是,然后是etc。 这是由于这样的事实,一旦我们尝试在左侧重新声明,其值就会重置为? 如果有人可以指出我的详细情况,那将很棒。 更改为,似乎正在按预期方式打印数字。我对它达到最大32位值的速度感到惊讶! 问题答案: 该问题是由于整数溢出引起的。 在32位二进制补码算法中: 确实确实开始具有2的
问题内容: 如果html文件是本地文件(在我的C驱动器上),则可以使用,但是如果html文件在服务器上并且图像文件是本地文件,则无法使用。这是为什么? 任何可能的解决方法? 问题答案: 如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,则将是一个安全漏洞。 解决此问题的唯一方法是在浏览器中构建扩展。Firefox扩展和IE扩展可以访问本地资源。Chrome的限制更为严
从TensorArray读取: 使用: 问题: 回溯(最近一次调用last):RLU培训中第130行的文件“\main.py”。train()文件“C:\Users\user\Documents\Projects\rl toolkit\rl_training.py”,第129行,在train self中_rpm,赛尔夫。批量大小,自行确定。梯度步数,记录步数b=self。在call result=
问题内容: 这不会执行: 错误消息是: 11-23 11:05:05.298:错误/数据库(31335):准备’创建表TestTable(名称文本,年龄整数,主键(ROWID))’时,0x2ab378上的故障1(表TestTable没有名为ROWID的列)。 但是,在创建TestTable之后,这可以准备并执行: 我可能将其视为需要自动递增主键和外键的解决方案,这些主键和外键永远不会用作应用程
我有以下内容: 配置中的基uri是: 基本URI:/API 所以我应该能够获得localhost:8080/api/cars/test 为什么?
Stage.close()对我不起作用。 我查看了:JavaFX2.0:关闭一个舞台(窗口) 这是我的代码: 下面是调用消息框类的代码: