在我的package.json中,我有一个启动脚本,我正用于我的开发环境.它看起来像这样:
"scripts": {
"dev": "NODE_PATH=src nodemon --watch src/ --exec babel-node src/app.js"
}
Run Code Online (Sandbox Code Playgroud)
当我击中npm run dev一切时,一切正常,巴贝尔正在发现应有的一切,并且nodemon开始观看.我看到了这个:
[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: /Users/Jonathan/Documents/swissnet/src/**/*
[nodemon] starting `babel-node src/app.js`
Run Code Online (Sandbox Code Playgroud)
当我在src/-folder节点中保存文件时,将重新启动服务器.但这是我的问题,它重启2-3次......每次我保存一个文件,它看起来像这样:
[nodemon] restarting due to changes...
[nodemon] starting `babel-node src/app.js`
[nodemon] restarting due to changes...
[nodemon] starting `babel-node src/app.js`
[nodemon] restarting due to changes...
[nodemon] starting `babel-node src/app.js`
Run Code Online (Sandbox Code Playgroud)
如果我输入"rs",那么nodemon会按预期重启一次.
我不知道如何解决这个问题,甚至不知道在哪里寻找答案.我试过去谷歌吧.我一直在访问github上的软件包的bug部分...(也许我只是在google搜索).
这是我为同一个问题找到的唯一链接,但它似乎没有答案:Nodemon在使用babel时多次运行保存.
无论如何我尝试了他的脚本,NODE_PATH=src nodemon src --exec babel -w src/ --out-dir build/ --source-maps …
我正在使用jquery ui的可排序函数(源)来重新排列元素.我已经构建了自定义回调来创建这些元素的列表.所以当我移动一个元素时,所有元素都会被赋予一个新的位置id.它可能看起来像这样:
[{
id_of_element_in_database: 12,
new_position: 0
}, {
id_of_element_in_database: 16,
new_position: 1
}, {
id_of_element_in_database: 14,
new_position: 2
}]
Run Code Online (Sandbox Code Playgroud)
我通过做一个简单的Ajax帖子将这个列表发送到我的后端
$.post('/position', { data: list });
Run Code Online (Sandbox Code Playgroud)
路线
router.post('/position', (req, res) => {
console.log(req.body.data); // This prints the array of objects above.
});
Run Code Online (Sandbox Code Playgroud)
架构
mongoose.Schema({
id: Number,
position: Number,
...
});
Run Code Online (Sandbox Code Playgroud)
现在我无法弄清楚如何有效地改变所有文件的位置.创建一个糟糕的数组循环并执行多个数据库请求不是最好的方法.
我在这里试过,这感觉很错.
for (let i in req.body.data) {
collection.update({ id: req.body.data[i].id }, { position: req.body.data[i].position });
Run Code Online (Sandbox Code Playgroud)
我必须有其他的东西来实现这一目标.我试过谷歌没有任何运气.
我正在尝试批量写入一些更新,除了更新插入之外的所有内容都正常。
我的代码完美地更新了所有项目,并且没有给出任何错误。
这里的问题是批量插入updateOne没有更新插入。
(这是我的代码的未经测试和缩短的示例,因此您可能会发现一些语法错误。希望您明白。)
async function insert(items) {
const ops = items.map(item => ({
updateOne: {
filter: {
id: item.id,
country: item.country,
},
update: { $set: item },
upsert: true
}
}));
return await db.collection.bulkWrite(ops);
}
insert([{
id: '123',
country: 'uk',
email: 'test@test.com'
}]);
Run Code Online (Sandbox Code Playgroud)
上面的代码片段不会更新插入缺失的项目,但会正确更新其他所有内容。
我正在使用node version 6.6.0andmongodb version v3.4.10并根据 3.4 的 mongodb 文档(https://docs.mongodb.com/v3.4/reference/method/db.collection.bulkWrite/),bulkwrite是3.2 版本中的新增功能。
此片段来自 MongoDB 3.4 文档bulkWrite。
db.collection.bulkWrite( [
{ updateOne :
{
"filter" : <document>,
"update" …Run Code Online (Sandbox Code Playgroud)