Comments (5)
All done, seems to work as expected, will make the PR shortly, tested with:
const uuid = require('uuid')
const mongoose = require('mongoose')
const patchHistory = require('mongoose-patch-history').default
const SchemaString = new mongoose.Schema({
_id: {
type: String,
default: uuid.v4
},
title: {
type: String
}
})
SchemaString.plugin(patchHistory, {
mongoose,
name: 'schemaStringHistory'
})
const ModelString = mongoose.model('schemaString', SchemaString)
const SchemaObjectId = new mongoose.Schema({
title: {
type: String
}
})
SchemaObjectId.plugin(patchHistory, {
mongoose,
name: 'schemaObjectIdHistory'
})
const ModelObjectId = mongoose.model('schemaObjectId', SchemaObjectId)
let tempStringDoc = new ModelString({
title: 'First Title'
})
let tempObjectIdDoc = new ModelObjectId({
title: 'First Title'
})
tempStringDoc.save()
tempObjectIdDoc.save()
from mongoose-patch-history.
Hey @brod - thanks for your work!
I'm not sure i understand the issue. What is it exactly that throws the CastError
?
from mongoose-patch-history.
CastError
is thrown at validation of the ref
type
in the PatchSchema
.
mongoose-patch-history/src/index.js
Line 20 in 0971bdb
ref: { type: Schema.Types.ObjectId, required: true, index: true }
The ref
type
needs to use the same type
as the schema _id
it's being used for.
// this works, since the default `_id` type will be an `ObjectId`
const mySchema = new mongoose.Schema({
...
})
mySchema.plugin(patchHistory, { mongoose, name: 'mySchemaPatches' })
// this doesn't, since the `_id` type is not an `ObjectId`
const mySchema = new mongoose.Schema({
_id: {
type: String,
default: uuidFunc
},
...
})
mySchema.plugin(patchHistory, { mongoose, name: 'mySchemaPatches' })
from mongoose-patch-history.
Thanks for the explanation and the PR update.
Haven't used non-ObjectId
_id
props so far. Do the documents that use an _id
of type Number
, for example, get any object id assigned in addition to the numeric _id
?
from mongoose-patch-history.
You're welcome, thanks for the merge!
From what I can tell, no, the _id
prop is the only required source of uniqueness and neither mongoose or mongodb care that an ObjectId
is missing.
Using a Number
or String
also has a reasonable impact on performance for the worse IIRC.
from mongoose-patch-history.
Related Issues (20)
- mongoose 6.4.4 not work HOT 4
- Close version with latest changes HOT 2
- Patches are not deleted if I use deleteMany({}) HOT 1
- An in-range update of mongoose is breaking the build 🚨 HOT 28
- Cannot read property '$__' of undefined HOT 1
- An in-range update of fast-json-patch is breaking the build 🚨 HOT 4
- Usage of old mongoose index practice HOT 2
- Is there an option to track author of changes HOT 5
- An in-range update of mongoose is breaking the build 🚨 HOT 45
- Bluebird promises module is a run-time dependency!
- Is this repo still active? HOT 9
- Breaking change in new released version v1.4.0: MongoError: unknown top level operator: $push HOT 6
- Cannot perform an `add` operation at the desired path HOT 6
- findOneAndUpdate with options { new: true, rawResult: true } throws Error HOT 6
- Bug: With the plugin, updateOne hangs, if nothing was found HOT 8
- Timeout upon saving a new document HOT 7
- Adding lean() causes TypeError: document.data is not a function HOT 9
- Not capturing delete events. HOT 7
- @types/mongoose-patch-history HOT 4
- Make name of internal data() method configurable
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mongoose-patch-history.