Node.js 为什么不能保存mongoose文档?
我已经使用以下中间件有一段时间了,但它突然停止保存新文档。评论中的进一步解释Node.js 为什么不能保存mongoose文档?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我已经使用以下中间件有一段时间了,但它突然停止保存新文档。评论中的进一步解释 var body = req.body; new ordersModel (body).save(function(err, newOrder, rowCount) { if (err) throw err; console.log(rowCount) // logs 1 updateEstimatedTime(newOrder); /* updateEstimatedTime runs b
var body = req.body;
new ordersModel (body).save(function(err, newOrder, rowCount) {
if (err) throw err;
console.log(rowCount) // logs 1
updateEstimatedTime(newOrder); /* updateEstimatedTime runs but inside
it, trying to find this document newOrder returns null,
meaning it was never saved */
});
如果我尝试像
var pleaseWork = new ordersModel (body);
console.log(pleaseWork) // it dumps a loaded mongoose object
pleaseWork.save(function(err, newOrder, rowCount) {
那么,为什么它不能持久化呢?我还多次尝试在顶部重新加载服务器,以防在服务器安装过程中加载集合
ordersModel.find({}, 'customer', function (err, docs) {
if (err) throw err;
console.log(docs)
})
但它只返回此错误开始之前存在的文档。我已经三次检查了模型名,整个脚本都是一样的。代码可能缺少什么?
我在网上也看到了一些例子,这些例子暗示了在非洲地区的一些情况
var pleaseWork = new ordersModel ();
pleaseWork.foo = body.foo;
pleaseWork.bar = body.bar;
pleaseWork.john = body.john;
console.log(pleaseWork) // dumps a loaded mongoose object
pleaseWork.save(function(err, newOrder, rowCount) {
现在,这对我来说是不可行的;ordersModel表有10多列——在模型的构造函数中删除body对象就足够了,并且在程序上次运行时起作用
虽然我认为没有必要,但如果你需要看我的模型,我可以提供。还有完整的服务器代码,以防您需要部署和测试。感谢@NeilLunn的评论和我随后的评论,我在第10行注意到我正在删除包含此新订单的
estimatedDeliveryTime=null
文档。这一行不是在中间件中,而是在初始化服务器变量的代理中
ordersModel.remove({estimatedDeliveryTime: null}).exec()
我曾经/正在使用它清除无效订单中的集合
mongoose.set('debug',true)
并查看执行.save()
时发生的情况。如果它在mongo中,则它不是表,而是集合。它不是一个列,而是一个文档属性,因为面向文档的数据库不是关系数据库。@NeilLunn这应该在mongoose.createConnection赋值之前,还是我可以随意将其放置在任何地方?确实是在任何地方,但最好是在开始时。但是您是在调用.createConnection()
还是只调用.connect()
?如果在回调上下文中使用.createConnection()
,则“可能”会出现问题。一般来说,大多数猫鼬方法在做任何事情之前都会进行一次“检查”,看看连接是否存在。我会给你一个投票,让你回来,至少解释一下问题的根源。