Answers:
我想这就是您要寻找猫鼬严密的东西
选项:严格
严格选项(默认情况下启用)可确保未在架构中指定的添加到模型实例的值不会保存到数据库中。
注意:除非有充分的理由,否则请勿将其设置为false。
var thingSchema = new Schema({..}, { strict: false });
var Thing = mongoose.model('Thing', thingSchema);
var thing = new Thing({ iAmNotInTheSchema: true });
thing.save() // iAmNotInTheSchema is now saved to the db!!
thing.set(key, value)
因为thing.key=value
不适用于此方法,也就是说,否则它不会持久地更改到数据库中。
MySQL
:)而且我认为Jonathan建议/根据Mongoose API Docs 注意:除非您有充分的理由,否则请不要将其设置为false。在当前情况下(大约只是NO-SQL
)是完全可以的
实际上,“混合”(Schema.Types.Mixed
)模式似乎完全在猫鼬中实现了...
它接受一个无模式的,自由格式的JS对象 -因此您可以抛出它。看来您之后必须手动触发该对象的保存,但这似乎是一个公平的权衡。
混合的
“随处可见” SchemaType,其灵活性来自于难以维护的折衷。混合可通过
Schema.Types.Mixed
或通过传递空对象文字来使用。以下是等效的:var Any = new Schema({ any: {} }); var Any = new Schema({ any: Schema.Types.Mixed });
由于它是一种无模式类型,因此您可以将其值更改为其他任何值,但是Mongoose失去了自动检测和保存这些更改的功能。要“告诉”猫鼬混合类型的值已更改,请调用
.markModified(path)
文档的方法,将路径传递到刚更改的混合类型。person.anything = { x: [3, 4, { y: "changed" }] }; person.markModified('anything'); person.save(); // anything will now get saved
嘿克里斯,看看Mongous。我遇到了猫鼬同样的问题,因为我的架构在开发中非常频繁地更改。Mongous使我能够拥有猫鼬的简单性,同时能够轻松地定义和更改我的“方案”。我选择简单地构建标准的JavaScript对象并将其存储在数据库中,如下所示
function User(user){
this.name = user.name
, this.age = user.age
}
app.post('save/user', function(req,res,next){
var u = new User(req.body)
db('mydb.users').save(u)
res.send(200)
// that's it! You've saved a user
});
尽管我确实相信您会错过一些很酷的中间件,例如“ pre”,但它远比Mongoose简单。我不需要任何东西。希望这可以帮助!!!
以下是详细说明:[ https://www.meanstack.site/2020/01/save-data-to-mongodb-without-defining.html] [1 ]
const express = require('express')()
const mongoose = require('mongoose')
const bodyParser = require('body-parser')
const Schema = mongoose.Schema
express.post('/', async (req, res) => {
// strict false will allow you to save document which is coming from the req.body
const testCollectionSchema = new Schema({}, { strict: false })
const TestCollection = mongoose.model('test_collection', testCollectionSchema)
let body = req.body
const testCollectionData = new TestCollection(body)
await testCollectionData.save()
return res.send({
"msg": "Data Saved Successfully"
})
})
[1]: https://www.meanstack.site/2020/01/save-data-to-mongodb-without-defining.html
它不可能了。
您可以将Mongoose与具有架构和节点驱动程序的集合一起使用,或者将那些无架构的集合用于另一个mongo模块。
https://groups.google.com/forum/#!msg/mongoose-orm/Bj9KTjI0NAQ/qSojYmoDwDYJ