gpt4 book ai didi

javascript - Mongoose 似乎悄然失败了

转载 作者:行者123 更新时间:2023-12-02 15:44:22 24 4
gpt4 key购买 nike

因此,有一个完全独立的问题(我认为),即将数组保存到 mongo 文档中。所以我拿出了那部分,创建了一个具有相同问题的数据结构来尝试解决它。但现在我的测试代码似乎在保存函数返回之前完成,只是不确定如何解决任一问题,或者它们是否可能已连接。

Mongoose 模式:

var mongoose = require('mongoose');
ObjectId = mongoose.Schema.Types.ObjectId;

var offerSchema = mongoose.Schema({
closeDate: Date,
settleDate: Date,
schemaVersion: Number,
_offered: [{ type: ObjectId, ref: 'User'}], //Ids of thos offered
_offerDate: { type: Date },// The date they where offered
_accepted: [{ type: ObjectId, ref: 'User'}],//Ids of those accepted
_acceptedDate: [{ type: Date }], //Dates when accepted
});



// create the model for users and expose it to our app
module.exports = mongoose.model('offer', offerSchema);

所以我编写了下面的代码来重新创建问题,下面的代码应该可以工作,但不会在 _offered 中存储值。

var offer = require('../models/offerSchema.js')
var indata = {"offer":{"closeDate":"2015-08-31T13:26:36.512Z","settleDate":"2015-08-31T13:26:36.512Z","type":1,"_offered":[{"id":"55dc7994ed0fcf4a58d4a689"},{"id":"55dcd30915e3be545a51bebd"}],"_offerDate":"2015-08-31T13:26:36.512Z"}}

var thisOffer = indata.offer
for ( var i in thisOffer ){
console.log("Got "+ i +" is " + thisOffer[i])

}
var myOffer = new offer(thisOffer);
myOffer._offered = undefined
var promise =
myOffer.save(function(err){
if(err){
console.log('Got an error: ' + err)
}
console.log('Got an id: ' + myOffer._id)
return 0;
}).then(function() {
console.log("I get here and quit?");
})

但是,代码似乎在保存完成之前完成,我实际上不确定如何避免这种情况。

最佳答案

您将逻辑与回调和 promise 混合在一起。所以你不需要回调,只需对返回的 promise 进行操作即可:

myOffer._offered = undefined
myOffer.save()
.then(function() {
console.log("I get here and quit?");
})
.then(null,function(err) {
console.log(err);
});

我注意到您使用 Bluebird Promise 进行了另一次尝试,但这不是必需的,因为如果您按照此处所示实现,任何错误都会得到适当的路由。

需要注意的是,mongooose 5.x 预计将采用更标准化的 Promise 方法和/或在配置时直接使用 Bluebird Promise

关于javascript - Mongoose 似乎悄然失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32328709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com