【问题标题】:Can't add array to mongodb无法将数组添加到 mongodb
【发布时间】:2020-03-17 22:43:06
【问题描述】:

我正在尝试向 mongodb 发送一个数组,但 res.json(user) 返回一个空的 biddingGroup:[] 并且 mongodb 文档永远不会出现字段 bidingGroup。我查看了堆栈帖子并看到了有关架构的建议。 我试过了

biddingGroup: [{type: String}],
biddingGroup: [String],
biddingGroup: {type: String},

我还没有找到捕获数据的工作模式。

我什至也硬编码了biddingGroup: ['test'],但它从未出现过。

app.js

app.put('/api/listings/:id', (req, res) =>

Post.update({
  id: req.query.id
}, {
  $set: {
    currentBid: req.query.currentBid,
    lastBidTimeStamp: req.params.lastBidTimeStamp,
    biddingGroup: ['test']
  }
}, {
  multi: false //set to false to ensure only one document gets updated
}).exec().then(data => {
  console.log(data);
}, err => {
  console.log(err);
})
    );

感谢任何帮助。

【问题讨论】:

  • 你能试试这个吗:- 在 Schema :: biddingGroup: [String] && Query :: Post.update( { id: req.query.id }, $set : { currentBid: req.query.currentBid, lastBidTimeStamp: req.params.lastBidTimeStamp, biddingGroup: ['test'] }) 或者如果你必须用新文档替换整个文档 :: Post.update( { id: req.query.id }, { currentBid: req.query.currentBid, lastBidTimeStamp: req.params.lastBidTimeStamp, biddingGroup: ['test'] })
  • 那么那个 id 在 db 中只有一个匹配的 id 吗?您可以直接运行查询并检查是否有任何文档正在更新并检查特定文档是否正在正确更新..
  • lastBidTimeStamp 和 currentBid 值会在您出价时更新。这是console.log(data)postimg.cc/yktsSnzv的截图我真的不明白为什么它没有出现在mongodb文档中,因为mongoose模型已经定义了biddingGroup:[String]并且该值被硬编码以消除对问题的额外猜测。跨度>
  • 你是在使用 .update() 还是其他类似 .findAndUpdate() 的东西,如果你使用 others & console.log(data) 那么它会打印旧文档,你需要通过选项 {new : true} 那么新的文档将被打印在数据中?

标签: mongodb express mongoose


【解决方案1】:

您需要在最后使用exec() 来运行查询。那是实际运行请求并向您返回承诺的函数。另外,您对 update 函数的使用通常是关闭的。

试试这个:

Post.update({
  id: req.query.id
}, {
  $set: {
    currentBid: req.query.currentBid,
    lastBidTimeStamp: req.params.lastBidTimeStamp,
    biddingGroup: ['test']
  }
}, {
  multi: false //set to false to ensure only one document gets updated
}).exec().then(data => {
  console.log(data);
}, err => {
  console.log(err);
});

【讨论】:

  • 我添加了您的代码并尝试了在顶部列出的猫鼬模型中定义 bidGroup 的所有三种变体,但bidGroup 仍然是空白的。即使使用硬编码的“测试”。 console.log(data) 的biddingGroup 看起来像biddingGroup: [] 我更新了上面的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多