【发布时间】:2016-03-27 13:24:27
【问题描述】:
在解决本应简单的事情时遇到了一些困难。 我正在使用 NodeJS 和 mongodb,并且还安装了 Bluebird 以使用 Promise。
我有一个简单的 for 循环,我在其中创建了一堆随机名称,并将它们推送到一个数组中,如下所示:
const PlayerGenerator = () => {
var playerArray = []
for (var i = 0; i < 15; i++) {
const player = new Player({
name: 'Player' + Math.random() * 100
})
playerArray.push(player)
}
return playerArray
}
我想将所有这些名称写入我的数据库,但不确定如何正确设置我的 Promise,以便将每个玩家都写入我的数据库。
server.get('api/team/new', (req, res, next) => {
const player = PlayerGenerator()
// This array contains 15 players with the exact same name.
})
从我在这里的不同线程中读到的内容来看,promises 似乎是解决这个问题的最佳方法,但就像我上面提到的,不确定如何设置它,正在寻找一些建议。
【问题讨论】:
-
为什么你认为 promise 会帮助你? Promise 是非常通用的东西,用于将功能与异步操作(如 XHRequests)链接起来。问题出在哪里?您无法写入数据库吗? 'const PlayerGenerator' 看起来也是完全同步的,在这里使用 Promise 是没有意义的。另外,如果您只是要将这些数据写入数据库,为什么要使用“const”?此外,在 ES6+node 中几乎完全实现了 Promise,为什么还要使用 Bluebird 之类的库来过度复杂化呢?
-
更简洁一点“这里没有异步代码”。所以“也许”你的
Player对象需要在数据库中实际创建,并且你只想在它们实际创建后返回。这就是你在这里问的吗?因为new Player()可能不是异步方法。当然,除非你隐瞒了我们不知道的事情。我的“猜测”是这只是一个猫鼬模型参考。所以不是异步的。然而!
标签: javascript node.js mongodb mongoose bluebird