mongoose - 如何使用架构创建新文档?
问题描述
我正在尝试使用我的架构创建新文档
const schema = new mongoose.Schema({
room: String,
messages: Array
})
const ConversationModel = mongoose.model('Conversation', schema)
const Conversation = new ConversationModel()
Conversation.findOneAndUpdate({room: data.room})
控制台输出:
UnhandledPromiseRejectionWarning: TypeError: Conversation.findOneAndUpdate is not a function
我可以在不使用这样的模式的情况下创建它
db.collection('conversations').findOneAndUpdate(
{room: data.room},
{$addToSet: {messages: ''}},
{returnOriginal: false, upsert: true}
)
但是使用模式会导致这个问题
解决方案
使用您的模型实例创建文档,即
const conversationSchema = new mongoose.Schema({ room: String, messages: Array })
const Conversation = mongoose.model('Conversation', conversationSchema)
const conversation = new Conversation({ room: data.room, messages: [''] })
conversation.save(err => {
if (err) return handleError(err)
// saved!
})
或使用 create 方法:
Conversation.create({ room: data.room, messages: [''] }, (err, conversation) => {
if (err) return handleError(err)
// saved!
});
或者,用于插入大量文档
Conversation.insertMany([{ room: data.room, messages: [''] }], err => {
});
或在模型上使用 findOneAndUpdate
Conversation.findOneAndUpdate(
{ 'room': data.room, messages: [''] },
{ '$addToSet': { 'messages': ''} },
{ 'new': false, 'upsert': true }
(err, conversation) => {
if (err) return handleError(err)
// saved!
}
)
推荐阅读
- spring - Spring DataSourceTransactionManager 使保存失败
- c# - 如何在方法或属性中使用依赖注入?
- c# - 无法将类型“System.Drawing.Image”转换为“System.Drawing.Icon”
- c - 移动类型宽度时右移不一致的行为(与 K&R 练习 2-06 相关)
- c# - 具有进程内托管的 Dotnet Core 多个启动类
- sql - update 语句不断更新所有行 :( , 'OR' 关系?
- php - 通过键名获取项目计数
- file-io - cypher/neo4j 中的文件 IO,或通过其他语言集成
- javascript - JavaScript:为 jquery ajax 重试添加延迟
- ruby-on-rails - Ruby 默认参数:静态还是动态?