nodejs mongoose推送到架构内的数组

时间:2017-11-03 19:14:34

标签: arrays node.js mongodb

我有一个猫鼬模式class list_stuff: A = 'a' B = 'b' C = 'c' stufflist = [v for k,v in list_stuff.__dict__.items() if not k.startswith("__")]

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[]

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

1 个答案:

答案 0 :(得分:0)

这个问题在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')
      })
      
    }
  })
}