【问题标题】:nodejs mongoose push to an array inside schema [duplicate]nodejs mongoose推送到架构内的数组[重复]
【发布时间】:2018-04-16 14:41:02
【问题描述】:

我有一个猫鼬模式inbox-model

var schema = mongoose.Schema({
    email: String,
    data: [{
        from: String,
        to: String,
        msg: String
    }]
})

var Inbox = module.exports = mongoose.model('Inbox',schema);

module.exports.addData = function(inbox, callBack){
    inbox.save(callBack);
}

当该电子邮件地址有新数据时,我需要为特定电子邮件添加到 data[] 数组。

我可以这样添加数据,通过我的路由器调用:

var Inbox = require('inbox-model');

var inbox = new Inbox({
    email: 'some@email.com',
    data:[{
       from: 'from',
       to: 'to',
       msg: 'msg'
})

Inbox.addData(inbox, Inbox);

虽然它没有添加到data[],但不断添加整个row

非常感谢您的帮助,我已经搜索了类似的问题,但我找不到添加数据,只是使用数组创建模型。

【问题讨论】:

    标签: arrays node.js mongodb


    【解决方案1】:

    这个问题已经在 StackOverflow 上得到了很多回答。不过,我又来回答了

    // Schema File - userSchema.js
    const userSchema = new Schema({
      email: { type: String, required: true },
      data: [{
            from: String,
            to: String,
            msg: String
      }]
    })
    
    const user = mongoose.model('user', userSchema)
    
    module.exports = user
    
    // Service File
    
    const user = require('./userSchema')
    
    function someFunction(email, from, to, message) {
      user.findOne({ email: email }, function(err, document) {
        if (document) {
          
          document.data.push({
            from: from,
            to: to,
            msg: message
          })
          
          document.save(function(err) {
            err != null ? console.log(err) : console.log('Data updated')
          })
          
        }
      })
    }

    【讨论】:

    • document 为空,知道为什么吗?
    • 它为空,因为您使用电子邮件 ID 查找的文档在数据库中不存在。请验证
    • 刚刚也试过了,谢谢!
    • 如果之前已经回答过,将其标记为重复。
    • 您也应该阅读副本。我们将人们指向现有答案而不是发布新答案是有原因的。一个主要原因是他们更有机会实际提供正确的信息。在使用数据库时,您不会“从服务器检索文档、对其进行修改并将其保存回来”作为良好实践,您应该了解原因。它将使您正在处理的代码变得更好。请去学习。
    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2014-12-07
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多